Android App Development ฉบับสมบูรณ์
ผแู้ ตง่ ดร.จกั รชัย โสอินทร์ [email protected]
พงษ์ศธร จนั ทร์ยอย
ณัฐณชิ า วีระมงคลเลิศ
บรรณาธกิ าร กิตินนั ท์ พลสวัสดิ์ [email protected]
ออกแบบปก อนนั วาโซะ
ออกแบบและจดั รปู เลม่ วุฒพิ นั ธ์ สมพระเมฆ
พิสูจน์อกั ษร สนุ ทรี บรรลอื ศักด,ิ์ มนฤดี ศรอี ุทโยภาส
ประสานงานการผลติ สุพตั รา อาจปรุ, ฉตั รชนก แกว้ จนั ทร์
E-BOOK PRODUCTION สุรีย์รตั น์ จอิ ู,๋ จิราภรณ์ โสภา
Android เป็นเคร่ืองหมายการค้าของบริษัท Google, Eclipse เป็นเคร่ืองหมายการค้าของบริษัท The
Eclipse Foundation และเครือ่ งหมายการคา้ อน่ื ๆ ทอี่ า้ งถงึ เปน็ ของบริษทั น้นั ๆ
สงวนลิขสิทธิ์ตามพระราชบัญญัติลิขสิทธิ์ พ.ศ. 2537 โดยบริษัท ไอดีซี พรีเมียร์ จ�ำกัด ห้ามลอกเลียน
ไม่ว่าสว่ นใดสว่ นหน่งึ ของหนงั สือเลม่ น้ี ไม่วา่ ในรูปแบบใดๆ นอกจากจะได้รับอนุญาตเป็นลายลักษณ์อกั ษร
จากผจู้ ดั พิมพ์เท่านนั้
บรษิ ทั ไอดซี ี พรเี มยี ร์ จำ� กดั จดั ตงั้ ขนึ้ เพอ่ื เผยแพรค่ วามรเู้ ทคโนโลยสี ารสนเทศทงั้ ในระดบั พน้ื ฐานและระดบั สงู
เรายินดีรับงานเขียนของนักวิชาการและนักเขียนทุกท่าน โดยเฉพาะงานที่เก่ียวข้องกับสารสนเทศ ท่าน
ผู้สนใจกรุณาติดต่อผ่านทางอีเมลท่ี [email protected] หรือโทรศัพท์หมายเลข 0-2962-1081
(อตั โนมตั ิ 10 คู่สาย) โทรสาร 0-2962-1084
ข้อมลู ทางบรรณานุกรม ดร.จักรชัย โสอนิ ทร์ สำ� หรับร้านค้าและตัวแทนจำ� หนา่ ย
ISBN Android App Development ฉบบั สมบูรณ์ โทรศพั ท์ 0-2962-1081-3 ตอ่ 112-114
นนทบรุ ี : ไอดซี ีฯ, 2555 โทรสาร 0-2962-1084
360 หน้า
1. แอนดรอยด์ ลูกค้าสมั พันธ์
2. การเขยี นโปรแกรม โทรศัพท ์ 0-2962-1081-3 ตอ่ 601
I พงษ์ศธร จนั ทร์ยอย (ผู้แต่งรว่ ม) โทรสาร 0-2962-1084
II ณัฐณชิ า วีระมงคลเลศิ (ผแู้ ต่งรว่ ม)
III ชื่อเร่อื ง
006.76
978-616-200-361-5
พิมพค์ ร้งั ที่ 1 กันยายน 2555
จัดพิมพ์และจัดจ�ำหน่ายโดย บริษัท ไอดซี ี พรีเมยี ร์ จำ� กดั
200 หมู่ 4 ชั้น 19 ห้อง 1901 อาคารจสั มินอินเตอร์เนชน่ั แนลทาวเวอร์
ถ.แจง้ วฒั นะ อ.ปากเกร็ด จ.นนทบรุ ี 11120
โทรศัพท์ 0-2962-1081 (อัตโนมัติ 10 คูส่ าย) โทรสาร 0-2962-1084
ราคา 275 บาท
ค�ำน�ำ
ความริเร่ิมในการจัดท�ำหนังสือ Android App Development ฉบับสมบูรณ์ เพ่ือให้นักศึกษา
ในรายวิชา 322261, 322262 และ 322749 ภาควิชาวิทยาการคอมพิวเตอร์ มหาวิทยาลัยขอนแก่น
ไดเ้ รยี นรูแ้ ละมคี วามเขา้ ใจในหลกั การท�ำงาน รวมไปถงึ มกี ารเรยี นการสอนแบบมุ่งเนน้ ไปยงั การใช้งานไดจ้ ริง
โดยทเ่ี นอ้ื หาจะมงุ่ เนน้ ไปทางดา้ นการพฒั นาแอพพลเิ คชนั แอนดรอยด์ (Android) บนโทรศพั ทเ์ คลอื่ นที่ อยา่ งไร
ก็ตามได้มีการปรับเน้ือหาให้ผู้อ่านท่ัวไปศึกษาและพัฒนาได้เช่นกัน โดยแบ่งการท�ำงานออกเป็น 2 ส่วน
ทั้งในส่วนของการพัฒนาโปรแกรมบนเคร่ืองโทรศัพท์จ�ำลอง (Emulator) และในส่วนของการน�ำไปใช้งาน
บนโทรศัพท์เคล่ือนที่จรงิ (Samsung Galaxy Nexus)
ถงึ แมว้ า่ Android จะเปน็ ซอฟตแ์ วรแ์ บบโอเพน่ ซอรส์ (Open Source) แตใ่ นปจั จบุ นั จะสงั เกตไดว้ า่
มเี อกสารหรือคมู่ ือประกอบการพฒั นาแอพพลิเคชนั Android น้อยมาก โดยสว่ นใหญแ่ ล้วเอกสารเหล่าน้นั จะ
อธบิ ายถึงการเสนอแอพพลิเคชนั และโทรศัพท์มอื ถือ Android ในรุน่ ตา่ งๆ เพ่ือทางการค้าเปน็ ส�ำคัญ โดยไม่มี
การอธบิ ายถงึ ขน้ั ตอนและหลกั การสำ� หรบั การพฒั นาแอพพลเิ คชนั โดยเฉพาะตวั อยา่ งของแอพพลเิ คชนั แบบ
สมบรู ณท์ ส่ี ามารถใชง้ านไดจ้ รงิ (นอกเหนอื จากหนงั สอื Basic Android APP Development ซง่ึ แตง่ โดยผเู้ ขยี น
เอง) ทั้งนใี้ นกรณที ีผ่ ้อู ่านมขี อ้ สงสัยสามารถสอบถามไดจ้ าก [email protected] และกลุม่ Facebook :
https://www.facebook.com/groups/114419038638590/
หนงั สอื เลม่ นีเ้ ป็นส่วนขยายเพมิ่ เตมิ โดยเฉพาะอยา่ งย่ิงไดเ้ นน้ ไปทางดา้ นการพัฒนาแอพพลเิ คชัน
Android ในข้ันท่ีสูงข้ึน มีโค้ดท่ีกระชับข้ึน รวมไปถึงมีการปรับเปล่ียนเวอร์ชันจากเนื้อหาเดิมให้ทันสมัย
เชน่ Android 4.0.3 (Ice Cream Sandwich) ทง้ั ในสว่ นของโทรศพั ทแ์ ละ Tablet โดยการพฒั นาแอพพลเิ คชนั
Android นนั้ จะใชภ้ าษาจาวา (Java) แต่ฟังก์ชันการใช้งานตา่ งๆ ส�ำหรบั การพัฒนาแอพพลิเคชนั Android
น้ันยังมีข้อปลีกย่อยอีกมาก ดังนั้น หนังสือเล่มน้ีจึงถูกจัดท�ำเพื่อให้ผู้อ่านมีความเข้าใจและมีหลักการ
พ้นื ฐานในการพฒั นาแอพพลิเคชนั Android ได้อยา่ งถูกต้องและสามารถน�ำไปใช้งานไดจ้ รงิ ในทางปฏิบัติ
เนอ้ื หาของหนงั สอื เลม่ นจี้ ะอธบิ ายเรม่ิ ตงั้ แตก่ ารตดิ ตงั้ Android Emulator รวมไปถงึ เทคนคิ วธิ ตี า่ งๆ
ท่ีผู้อ่านจ�ำเป็นต้องใช้ และน�ำเสนอแนวทางการแก้ไขปัญหา จนกระท่ังถึงการแสดงตัวอย่างของโปรแกรม
ท่ีเป็นพ้ืนฐานส�ำคัญต่างๆ จากนั้นก็จะน�ำแอพพลิเคชันที่พัฒนาได้ไปติดตั้งบนโทรศัพท์จริง ซึ่งโดยภาพรวม
สามารถแบ่งโครงสร้างของหนังสือเล่มน้ีออกเป็น 3 ส่วนคือ ส่วนแรกจะเป็นการแนะน�ำข้ันตอนวิธีการ
ติดต้ังเคร่ืองมือส�ำหรับการพัฒนาแอพพลิเคชัน Android ส่วนท่ี 2 จะเป็นการฝึกพัฒนาแอพพลิเคชันใน
รูปแบบต่างๆ ซึ่งผู้เขียนได้ออกแบบเน้ือหาในแต่ละบทให้มีความครอบคลุมกับทักษะต่างๆ ท่ีจ�ำเป็นส�ำหรับ
การน�ำไปพัฒนาแอพพลิเคชันขั้นสูงได้ และส่วนที่ 3 จะเป็นการแนะน�ำเทคนิคในการแก้ไขปัญหาส�ำหรับ
การพฒั นาแอพพลิเคชัน และการน�ำแอพพลเิ คชนั ท่ไี ดพ้ ฒั นาไวบ้ น Android Emulator ไปใชง้ านหรือตดิ ตง้ั
บนเครือ่ งโทรศพั ทเ์ คลือ่ นท่จี ริง
สุดท้ายนี้ส�ำหรับการเขียนหนังสือเล่มนี้ จะต้องขอบพระคุณคุณพ่อคุณแม่และครอบครัว
ของผู้เขียน ที่คอยเป็นก�ำลังใจและให้การสนับสนุนมาตลอด คณะบุคคลอีกหลายฝ่ายทั้งในส่วนของ
ภาควชิ าเอง หัวหนา้ ภาควชิ า รศ.สมจิตร อาจอนิ ทร,์ คณะอาจารย์ รศ.สุรศกั ด์ิ สงวนพงษ์ และรศ.ยนื
ภู่วรวรรณ ท่ีเป็นแรงบันดาลใจส�ำหรับการเขียนหนังสือต่างๆ และยังรวมไปถึงนักศึกษาช่วยสอน
นายพงษ์ศธร จันทร์ยอย และนางสาวณัฐณิชา วีระมงคลเลิศ ที่เป็นส่วนหลักในการผลักดันและ
จัดหาข้อมูลส่วนของซอร์สโค้ด (Source Code) ท่ีน�ำมาปรับแต่ง และสุดท้ายขอแสดงความยินดี
กับนกั ศกึ ษานายธีระวฒั น์ นิมมศภุ วงศ์รัฐ, นายคฑา โพธสิ าร และนางสาวกติ ตมิ า หนองหาร ที่คว้า
รางวลั ชนะเลศิ การแขง่ ขนั พฒั นาโปรแกรมคอมพวิ เตอรแ์ หง่ ประเทศไทย ครงั้ ที่ 14 (NSC 2012) หมวด
Mobile Application โดยพฒั นาโปรแกรมดนตรไี ทยวงเครอ่ื งสาย ซง่ึ เปน็ การตอ่ ยอดจากหนงั สอื เลม่ น้ี
ดร.จักรชยั โสอินทร์
Chakchai So-In, Ph.D.
กนั ยายน 2555
Contents
บทที่ 1 รู้จักแอนดรอยด์ (Android)......................................................1
แอนดรอยด์คืออะไร................................................................................................................................................. 1
ประเภทของระบบปฏิบัติการ Android...................................................................................................... 3
สามารถพัฒนาอะไรได้บ้างบน Android.................................................................................................... 3
สถาปัตยกรรมของแอนดรอยด์ (Android Architecture).................................................................................. 5
ส่วนประกอบของแอพพลิเคชัน (Application Component)............................................................................ 9
วงรอบชีวิตของแอพพลิเคชัน (Application Life Cycle)................................................................................10
สรุปท้ายบท............................................................................................................................................................. 12
แบบฝึกหัดท้ายบท................................................................................................................................................. 12
บทที่ 2 การติดตั้งเคร่ืองมือสำ�หรับการพัฒนาแอพพลิเคชันบน Android1�������13
การติดต้ัง JDK (Java Development Kit).......................................................................................................14
การติดต้ังโปรแกรม Eclipse................................................................................................................................18
เร่ิมต้นเขียนโปรแกรมด้วย Eclipse.........................................................................................................19
ก�ำหนดให้ Text Editors แสดงหมายเลขบรรทัด..................................................................................24
การติดต้ัง Android SDK (Android Software Development Kit)..............................................................25
การติดต้ัง ADT (Android Development Tool)..............................................................................................27
การปรับแต่งค่า ADT และ Android SDK.............................................................................................32
การติดต้ัง SDK Platform.........................................................................................................................36
การสร้างโทรศัพท์จ�ำลอง (Emulator).................................................................................................................38
สรุปท้ายบท............................................................................................................................................................. 42
แบบฝึกหัดท้ายบท................................................................................................................................................. 42
บทที่ 3 เริ่มต้นพัฒนาแอพพลิเคชัน......................................................43
เร่ิมต้นสร้างโปรเจ็กต์............................................................................................................................................. 44
ออกแบบหน้าจอแอพพลิเคชัน.............................................................................................................................. 51
เขียนโค้ดก�ำหนดการท�ำงานของแอพพลิเคชัน................................................................................................... 58
ทดสอบการท�ำงานของแอพพลิเคชันผ่านโทรศัพท์จ�ำลอง (Emulator)...........................................................60
การส่งออกและน�ำเข้าโปรเจ็กต์ใน Eclipse........................................................................................................65
การส่งออกโปรเจ็กต์เป็น Archive File....................................................................................................66
การน�ำเข้าโปรเจ็กต์จาก Archive File.....................................................................................................69
เร่ิมต้นพัฒนาแอพพลิเคชันบน Tablet...............................................................................................................72
สรุปท้ายบท............................................................................................................................................................. 74
แบบฝึกหัดท้ายบท................................................................................................................................................. 74
สารบัญ I
บทที่ 4 พัฒนาแอพพลิเคชันอย่างง่าย..................................................75
เริ่มต้นสร้างโปรเจ็กต์............................................................................................................................................. 76
ออกแบบหน้าจอแอพพลิเคชัน.............................................................................................................................. 78
การแก้ไขไฟล์ main.xml...........................................................................................................................78
การแก้ไขไฟล์ string.xml..........................................................................................................................80
เขียนโค้ดก�ำหนดการท�ำงานของแอพพลิเคชัน................................................................................................... 82
ทดสอบการท�ำงานของแอพพลิเคชันผ่านโทรศัพท์จ�ำลอง (Emulator)...........................................................84
สรุปท้ายบท............................................................................................................................................................. 90
แบบฝึกหัดท้ายบท................................................................................................................................................. 90
บทที่ 5 การสร้างส่วนติดต่อกับผู้ใช้ (User Interface).............................91
เร่ิมต้นสร้างโปรเจ็กต์............................................................................................................................................. 92
TextView : แสดงข้อความ..................................................................................................................................95
การก�ำหนดคุณสมบัติ TextView..............................................................................................................95
การเปลี่ยนแบบอักษรส�ำหรับ TextView.................................................................................................96
EditText : รับข้อความ..........................................................................................................................................98
ImageView : แสดงรูปภาพ...............................................................................................................................100
Button : ปุ่ม.........................................................................................................................................................101
การเพ่ิมอีเวนต์ (Event) ให้ Button......................................................................................................102
ImageButton : ปุ่มรูปภาพ................................................................................................................................104
สรุปท้ายบท...........................................................................................................................................................106
แบบฝึกหัดท้ายบท...............................................................................................................................................106
บทที่ 6 รู้จักการใช้งานเลย์เอาต์ (Layout)........................................... 107
Linear Layout.....................................................................................................................................................107
Relative Layout.................................................................................................................................................111
Frame Layout.....................................................................................................................................................114
Absolute Layout................................................................................................................................................116
Table Layout......................................................................................................................................................119
สรุปท้ายบท...........................................................................................................................................................121
แบบฝึกหัดท้ายบท...............................................................................................................................................122
บทที่ 7 รู้จักการใช้งานวิวกรุ๊ป (ViewGroup) ชนิดต่างๆ......................... 123
ListView...............................................................................................................................................................123
ScrollView...........................................................................................................................................................126
Image Switcher View......................................................................................................................................130
Options Menu....................................................................................................................................................134
TabWidget...........................................................................................................................................................138
WebView.............................................................................................................................................................141
II Android App Development ฉบับสมบูรณ์
Preferences Screen.........................................................................................................................................145
การจัดวางหน้าจอ (Screen Orientation)........................................................................................................150
สรุปท้ายบท...........................................................................................................................................................156
แบบฝึกหัดท้ายบท...............................................................................................................................................156
บทที่ 8 การพัฒนาแอพพลิเคชันรับส่งข้อความ (SMS)............................ 157
หลักการท�ำงานของแอพพลิเคชันรับส่งข้อความ..............................................................................................158
เริ่มต้นสร้างโปรเจ็กต์...........................................................................................................................................159
ก�ำหนดสิทธ์ิการท�ำงานให้แอพพลิเคชัน............................................................................................................161
ออกแบบหน้าจอแอพพลิเคชัน............................................................................................................................162
เขียนโค้ดก�ำหนดการท�ำงานของแอพพลิเคชัน.................................................................................................164
การเขียนโค้ดส่วนของการส่งข้อความ...................................................................................................164
การเขียนโค้ดส่วนของการรับข้อความ...................................................................................................166
ทดสอบการท�ำงานของแอพพลิเคชันผ่านโทรศัพท์จ�ำลอง (Emulator).........................................................168
สรุปท้ายบท...........................................................................................................................................................171
แบบฝึกหัดท้ายบท...............................................................................................................................................172
บทที่ 9 การพัฒนาแอพพลิเคชันติดต่อกับ GPS และการอ้างอิงกับ
ระบบแผนที่ (Map)............................................................. 173
ความรู้พื้นฐานเก่ียวกับ GPS..............................................................................................................................173
การอ่านต�ำแหน่งพิกัดของระบบ GPS..............................................................................................................174
เริ่มต้นสร้างโปรเจ็กต์...............................................................................................................................174
ก�ำหนดสิทธ์ิการท�ำงานให้แอพพลิเคชัน.................................................................................................176
เขียนโค้ดก�ำหนดการท�ำงานของแอพพลิเคชัน.....................................................................................176
ทดสอบการท�ำงานของแอพพลิเคชันผ่านโทรศัพท์จ�ำลอง (Emulator)..............................................179
การแสดงผลค่าพิกัดบน Google Map.............................................................................................................182
สร้าง Google API Key..........................................................................................................................182
ก�ำหนดสิทธิ์การท�ำงานให้แอพพลิเคชัน.................................................................................................184
ออกแบบหน้าจอแอพพลิเคชัน................................................................................................................184
เขียนโค้ดก�ำหนดการท�ำงานของแอพพลิเคชัน.....................................................................................185
ทดสอบการท�ำงานของแอพพลิเคชันผ่านโทรศัพท์จ�ำลอง (Emulator)..............................................187
ปรับแต่งแอพพลิเคชันเพ่ือแสดงแผนท่ีในรูปแบบต่างๆ..................................................................................188
การเพิ่ม Marker ลงบนแผนที่............................................................................................................................191
สรุปท้ายบท...........................................................................................................................................................195
แบบฝึกหัดท้ายบท...............................................................................................................................................195
บทที่ 10 การพัฒนาแอพพลิเคชันติดต่อบนเครือข่ายอย่างง่าย.................. 197
การสร้างแอพพลิเคชันส่วนเซิร์ฟเวอร์...............................................................................................................198
การสร้างแอพพลิเคชันส่วนไคลเอนท์................................................................................................................207
สารบัญ III
ทดสอบการท�ำงานของแอพพลิเคชัน.................................................................................................................211
สรุปท้ายบท...........................................................................................................................................................213
แบบฝึกหัดท้ายบท...............................................................................................................................................213
บทที่ 11 การพัฒนาแอพพลิเคชันทำ�งานกับฐานข้อมูล2���������������������������� 215
ความรู้เบ้ืองต้นเกี่ยวกับการท�ำงานกับฐานข้อมูล..............................................................................................215
การสร้างส่วนเช่ือมต่อและใช้งานฐานข้อมูล.....................................................................................................216
การใช้งานฐานข้อมูลผ่าน User Interface.......................................................................................................224
ออกแบบหน้าจอแอพพลิเคชัน................................................................................................................224
เขียนโค้ดก�ำหนดการท�ำงานของแอพพลิเคชัน.....................................................................................229
ทดสอบการท�ำงานของแอพพลิเคชัน.................................................................................................................238
สรุปท้ายบท...........................................................................................................................................................239
แบบฝึกหัดท้ายบท...............................................................................................................................................240
บทที่ 12 การพัฒนาเกมแบบ 2 มิติ................................................... 241
วิธีการเล่นเกม......................................................................................................................................................241
การสร้างคลาสหลักในการพัฒนาเกม XO.........................................................................................................242
การสร้างหน้าจอส่วนต่างๆ ของเกม...................................................................................................................248
การสร้างหน้าจอเมนูส�ำหรับเลือกรูปแบบการเล่น.................................................................................248
การสร้างหน้าจอส�ำหรับป้อนช่ือผู้เล่น.....................................................................................................251
การสร้างหน้าจอส�ำหรับเล่นเกม..............................................................................................................254
การสร้างหน้าจอเม่ือจบเกม.....................................................................................................................256
ก�ำหนดรายละเอียดให้แอ็คทิวิต้ีต่างๆ.....................................................................................................258
การสร้างกราฟิก (Graphic) เบื้องต้น................................................................................................................260
การจัดการเกี่ยวกับหน้าจอสัมผัส (TouchScreen)..........................................................................................263
การปรับแต่งการแสดงผลเมื่อจบเกม ...............................................................................................................264
ทดสอบการท�ำงานของเกม..................................................................................................................................269
สรุปท้ายบท...........................................................................................................................................................270
แบบฝึกหัดท้ายบท...............................................................................................................................................270
บทที่ 13 การใช้งานเซนเซอร์ (Sensor) ใน Android............................. 271
การสร้างโปรเจ็กต์ (Project)..............................................................................................................................272
ก�ำหนดสิทธ์ิการท�ำงานให้แอพพลิเคชัน............................................................................................................273
ออกแบบหน้าจอแอพพลิเคชัน............................................................................................................................273
เขียนโค้ดก�ำหนดการท�ำงานของแอพพลิเคชัน ...............................................................................................274
สร้างคลาสควบคุมการเปล่ียนแปลงต�ำแหน่งของลูกบอล...................................................................274
เขียนโค้ดก�ำหนดการท�ำงานในคลาสหลัก..............................................................................................277
ทดสอบการท�ำงานของแอพพลิเคชัน.................................................................................................................280
สรุปท้ายบท...........................................................................................................................................................281
แบบฝึกหัดท้ายบท...............................................................................................................................................281
IV Android App Development ฉบับสมบูรณ์
บทที่ 14 เทคนิคในการแก้ไขปัญหาสำ�หรับการพัฒนาแอพพลิเคชัน2������������� 283 V
การใช้งานเคร่ืองมือ Dalvik Debug Monitor Server (DDMS)..................................................................285
Devices.....................................................................................................................................................287
Emulator Control...................................................................................................................................287
การใช้งาน LogCat..............................................................................................................................................289
การตรวจสอบข้อผิดพลาดของแอพพลิเคชัน โดยการอ่านค่า Log....................................................291
ค้นหาต�ำแหน่งของไฟล์ด้วย File Explorer......................................................................................................292
สรุปท้ายบท...........................................................................................................................................................293
แบบฝึกหัดท้ายบท...............................................................................................................................................293
บทที่ 15 การอัพโหลดแอพพลิเคชันเข้า Android Market....................... 295
การจัดเตรียมไฟล์ต่างๆ ส�ำหรับอัพโหลดแอพพลิเคชัน...................................................................................296
การจัดเตรียมไฟล์รูปภาพและวิดีโอส�ำหรับอัพโหลดแอพพลิเคชัน.....................................................296
การส่งออกไฟล์ .apk ส�ำหรับอัพโหลดแอพพลิเคชัน...........................................................................297
การอัพโหลดแอพพลิเคชันเข้า Android Market............................................................................................303
การอัพเดตเวอร์ชันแอพพลิเคชัน.......................................................................................................................309
สรุปท้ายบท...........................................................................................................................................................313
แบบฝึกหัดท้ายบท...............................................................................................................................................313
บทที่ 16 การติดตั้งแอพพลิเคชันบนเคร่ืองโทรศัพท์จริง.......................... 315
การติดต้ังไดรเวอร์ของเคร่ืองโทรศัพท์ (Driver Installation)........................................................................316
การส่งออกไฟล์ .apk...........................................................................................................................................321
การเตรียมการส่งออกไฟล์ .apk ...........................................................................................................321
การน�ำไฟล์ .apk ไปติดตั้งบนเครื่องโทรศัพท์จ�ำลอง หรืออีมูเลเตอร์เครื่องอ่ืน................................324
การน�ำไฟล์ .apk ไปติดตั้งบนโทรศัพท์เคล่ือนที่จริง.............................................................................325
สรุปท้ายบท...........................................................................................................................................................326
แบบฝึกหัดท้ายบท...............................................................................................................................................326
Appendix ความรู้เบื้องต้นการเขียนโปรแกรมภาษาจาวา..................... 327
ชนิดของข้อมูล (Data Type).............................................................................................................................327
การประกาศตัวแปร (Declaration)....................................................................................................................328
หลักการต้ังช่ือตัวแปร..............................................................................................................................328
ตัวแปรชนิดข้อความ................................................................................................................................328
การประกาศค่าคงท่ี..............................................................................................................................................329
ตัวด�ำเนินการ (Operators)................................................................................................................................329
ล�ำดับความส�ำคัญของตัวด�ำเนินการ......................................................................................................331
การแสดงผลอักขระพิเศษ...................................................................................................................................331
การจัดรูปแบบแสดงผลตัวเลข................................................................................................................332
การแปลงชนิดข้อมูล............................................................................................................................................332
สารบัญ
การแปลงชนิดข้อมูลแบบ Implicit type conversion........................................................................332
การแปลงชนิดข้อมูลแบบ Explicit type conversion........................................................................333
การเขียนค�ำอธิบายโปรแกรม..............................................................................................................................334
ค�ำส่ังตัดสินใจ.......................................................................................................................................................334
ค�ำสั่งวนลูป...........................................................................................................................................................336
ตัวแปรอาร์เรย์......................................................................................................................................................337
ตัวแปรอาร์เรย์ 1 มิติ...............................................................................................................................337
ตัวแปรอาร์เรย์หลายมิติ...........................................................................................................................337
การเขียนโปรแกรมกับตัวแปรอาร์เรย์................................................................................................................338
การประกาศตัวแปรอาร์เรย์.....................................................................................................................338
การก�ำหนดค่าข้อมูลให้ตัวแปรอาร์เรย์...................................................................................................339
การอ้างถึงข้อมูลในตัวแปรอาร์เรย์.........................................................................................................339
พื้นฐานการเขียนโปรแกรมเชิงวัตถุ....................................................................................................................340
บรรณานุกรม.........................................................................345
Index..................................................................................347
VI Android App Development ฉบับสมบูรณ์
1
รู้จักแอนดรอยด์ (Android)
บทนเี้ ปน็ เนอื้ หาที่อย่ใู นสว่ นแรกสำ� หรบั หนังสือเลม่ น้ี ซงึ่ เป็นเนอ้ื หาที่อธิบายถึงแอนดรอยด์ในเบอื้ งต้น
รวมไปถึงการอธิบายถึงสถาปัตยกรรมของแอนดรอยด์ท่ีส�ำคัญ ทั้งน้ีเพื่อให้ผู้อ่านสามารถน�ำไปประยุกต์ใช้เพื่อ
ท�ำความเข้าใจในการพฒั นาแอพพลิเคชัน โดยท่เี นอื้ หาในบทนจ้ี ะแบ่งออกเป็น 4 สว่ นคอื แอนดรอยดค์ ืออะไร
สถาปัตยกรรมของแอนดรอยด์ ส่วนประกอบของแอพพลเิ คชัน และวงรอบชวี ติ ของแอพพลิเคชนั
แอนดรอยด์คืออะไร
แอนดรอยด ์ (Android) เป็นซอฟต์แวรท์ ม่ี โี ครงสร้างแบบเรยี งทับซอ้ นหรือแบบสแต็ค (Stack) ซึง่
รวมเอาระบบปฏิบัติการ มิดเดิลแวร์ และแอพพลิเคชันท่ีส�ำคัญเข้าไว้ด้วยกัน เพื่อใช้ส�ำหรับท�ำงานบนอุปกรณ์
พกพาเคล่ือนทโ่ี ดยเฉพาะ เช่น โทรศพั ท์มอื ถือ, แทบ็ เลต็ เป็นตน้
การทำ� งานของแอนดรอยดม์ พี น้ื ฐานอยบู่ นระบบลนี กุ ซเ์ คอรเ์ นล (Linux Kernel)
ซึง่ ใช้ Android SDK (Software Development Kit) เปน็ เคร่ืองมอื ส�ำหรับการพฒั นา
แอพพลิเคชนั บนระบบปฏบิ ัติการ Android โดยใช้ภาษา Java ในการพฒั นา
Android เร่ิมพฒั นาโดยบรษิ ัท แอนดรอยด์ และต่อมาได้ผนวกเขา้ กับบริษัท
Google ในเดอื นพฤศจกิ ายน ปี พ.ศ. 2550 ซง่ึ มกี ารรว่ มมอื กนั ระหวา่ งบรษิ ทั ชนั้ นำ� มากกวา่
33 บรษิ ทั เพอื่ พฒั นาระบบ Android ทงั้ บรษิ ทั ผใู้ หบ้ รกิ ารโทรศพั ทเ์ คลอื่ นที่ บรษิ ทั ผผู้ ลติ อปุ กรณโ์ ทรศพั ทเ์ คลอื่ นที่
บรษิ ทั ซอฟตแ์ วร์ และบรษิ ทั เอกชนตา่ งๆ เชน่ HTC, LG, Motorola, Samsung, China Mobile Communications,
KDDI, DoCoMo, Sprint/Nextel, T-Mobile, Telecom Italia, Telefonica, Audience, Broadcom, Intel, Marvel,
NVidia, eBay, Packet Video, TAT และ Wind River เปน็ ตน้ โดยใชช้ อื่ กลมุ่ วา่ OHA (Open Handset Alliances)
ทง้ั น้ี OHA ไดร้ ว่ มมอื กนั พฒั นามาตรฐานสำ� หรบั การพฒั นาซอฟตแ์ วรร์ ะบบเปดิ (Open System) หรอื
โอเพน่ ซอร์ส (Open Source) โดยมลี ขิ สทิ ธิ์ตาม Apache Version 2 license
ซึ่งหลักลิขสิทธิ์ของ Apache จะอนุญาตให้ผู้พัฒนาสามารถน�ำโค้ดที่มีอยู่ไปพัฒนาต่อได้ ทั้งในส่วน
ของแบบการคา้ (Commercial) หรอื ซอฟตแ์ วรก์ รรมสทิ ธิ์ (Proprietary) และแบบใชฟ้ รหี รอื ฟรแี วร์ (Freeware) กไ็ ด้
ผอู้ า่ นสามารถศกึ ษาเพม่ิ เตมิ หรอื ดาวนโ์ หลดซอฟตแ์ วรไ์ ดจ้ ากเวบ็ ไซต์ http://developer.android.com
เวบ็ ไซต์ Android Developers
จนถงึ ปจั จบุ นั มกี ารพฒั นาแอนดรอยดอ์ อกมาหลายรนุ่ ตงั้ แตร่ นุ่ ท่ี 1.5 จนกระทง่ั ถงึ รนุ่ 4.0.3 ดงั ตาราง
Platform Codename API Level Distribution
Android 1.5 Cupcake 3 0.3%
Android 1.6 Donut 4 0.7%
Android 2.1 Eclair 7 5.5%
Android 2.2 Froyo 8 20.9%
Android 2.3-Android 2.3.2 Gingerbread 9 0.5%
Android 2.3.3-Android 2.3.7 10 63.9%
Android 3.0 Honeycomb 11 0.1%
Android 3.1 12 1.0%
Android 3.2 13 2.2%
Android 4.0-Android 4.0.2 Ice Cream Sandwich 14 0.5%
Android 4.0.3-Android 4.0.4 15 4.4%
2 Android App Development ฉบับสมบูรณ์
ประเภทของระบบปฏิบัติการ Android
เน่ืองจากระบบปฏิบัติการ Android เป็นซอฟต์แวร์ระบบเปิด จึงอนุญาตให้นักพัฒนาหรือผู้ท่ีสนใจ
สามารถดาวน์โหลด Source Code ได้ ท�ำให้มผี ู้พัฒนาจากหลายๆ ฝา่ ยนำ� Source Code มาปรับแต่งและ
พฒั นาสรา้ งแอพพลเิ คชนั บนระบบ Android ในแบบฉบบั ของตนเองมากขนึ้ โดยสามารถแบง่ ประเภทของระบบ
Android ออกเป็นกลุม่ ๆ ได้ 3 ประเภทดังต่อไปน้ี
z A ndroid Open Source Project (AOSP) เปน็ ระบบ Android ประเภทแรกทที่ างบรษิ ทั Google
เปดิ ใหส้ ามารถนำ� Source Code ไปตดิ ตง้ั และใชง้ านในอปุ กรณต์ า่ งๆ ไดโ้ ดยทไ่ี มต่ อ้ งเสยี คา่ ใชจ้ า่ ย
z O pen Handset Mobile (OHM) เปน็ แอนดรอยดท์ ไี่ ดร้ บั การพฒั นารว่ มกบั กลมุ่ Open Handset
Alliances (OHA) ซึง่ บรษิ ทั เหลา่ น้จี ะพฒั นาระบบ Android ในแบบฉบับของตนเอง โดยมีรปู รา่ ง
หน้าตาการแสดงผล และฟงั ก์ชนั การใชง้ านทแ่ี ตกตา่ งกัน รวมไปถึงอาจจะมีความเปน็ เอกลักษณ์
และรูปแบบการใช้งานเป็นของแต่ละบริษัท และโปรแกรมแอนดรอยด์ประเภทน้ีก็จะได้รับสิทธ์ิ
บริการเสรมิ ตา่ งๆ จากกเู กลิ ท่ีเรียกว่า GMS (Google Mobile Service) ซึง่ เป็นบรกิ ารเสรมิ ท่ี
ทำ� ใหร้ ะบบ Android มีประสิทธภิ าพมากขน้ึ นัน่ เอง
z C ooking หรอื Customize เป็นระบบ Android ที่นักพฒั นานำ� เอาซอรส์ โค้ดจากแหล่งตา่ งๆ มา
ปรับแต่งให้อยู่ในแบบฉบับของตนเอง ซึ่งการพัฒนาจะต้องปลดล็อคสิทธ์ิในการใช้งานอุปกรณ์
(Unlock) เสยี กอ่ นจึงจะสามารถตดิ ตัง้ ได้ ทั้งนี้ระบบ Android ประเภทนีถ้ ือได้วา่ เป็นประเภทที่มี
ความสามารถสูงที่สุด เน่ืองจากจะได้รับการปรับแต่งขีดความสามารถต่างๆ ให้มีความเข้ากัน
ได้กบั อปุ กรณ์น้ันๆ จากผใู้ ช้งานจรงิ
อยา่ งไรกต็ ามการทรี่ ะบบ Android ของแตล่ ะผผู้ ลติ จะไดร้ บั บรกิ าร Google Mobile Service (GMS) นนั้
ผู้ผลิตจะต้องทดสอบระบบและขออนญุ าตกบั ทางกเู กลิ เสียกอ่ น จึงสามารถนำ� เครอ่ื งออกสู่ตลาดได้
สามารถพัฒนาอะไรได้บ้างบน Android
การพฒั นาแอพพลิเคชนั บน Android มีไลบรารี (Library) การใชง้ านมากมายทีอ่ ำ� นวยความสะดวก
ใหแ้ ก่นกั พัฒนา ในหัวขอ้ นี้จะขอยกตวั อย่างเฉพาะไลบรารที ี่น่าสนใจ ตวั อย่างเชน่
ไลบรารี (Library) ส�ำหรับใช้ในการพัฒนาแอพพลิเคชันจะมีโครงสร้างเป็นมาตรฐาน ซ่ึงภายใน
ไลบรารีน้ันจะมีโค้ดท่ีน�ำกลับมาใช้ได้ (Reusable) อยู่เป็นจ�ำนวนมาก ซึ่งจะท�ำให้นักพัฒนาประหยัดเวลา
ในการพัฒนาแอพพลิเคชันต่างๆ ได้อย่างมาก เนื่องจากไม่มีความจ�ำเป็นต้องเขียนโค้ดเดิมๆ ซ้�ำๆ อีก
เม่ือมีการพัฒนาแอพพลิเคชันใหม่ หรือแอพพลิเคชันท่ีมีฟังก์ชันการท�ำงานท่ีคล้ายคลึงกัน
ดงั นนั้ ไลบรารนี จี้ ะทำ� หนา้ ทห่ี ลกั คอื การนำ� กลบั มาใชห้ รอื พฒั นาตอ่ ยอดการทำ� งานหลกั ใหด้ ขี น้ึ นนั่ เอง
บทท่ี 1 รู้จักแอนดรอยด์ (Android) 3
z D alvik Virtual Machine (VM) เป็นส่วนการสร้างเครื่องจ�ำลองแบบเสมือนที่มีการออกแบบ
ใหเ้ หมาะสมกบั อปุ กรณเ์ คลื่อนทหี่ รืออุปกรณม์ อื ถือ
z I ntegrated Browser เป็นการผนวกกับ Web Browser เขา้ ไว้กับแอนดรอยด์ ทัง้ นี้มีพนื้ ฐาน
มาจากซอฟต์แวร์เว็บคติ (WebKit)
เว็บไซต์ WebKit
z O ptimized Graphic เปน็ สว่ นสนบั สนนุ การท�ำงานแบบกราฟกิ ท้งั ในส่วน 2 มติ ิและ 3 มติ ิ โดย
ใช้เครือ่ งมือ OpenGL
z S QLite เปน็ สว่ นสนับสนุนการทำ� งานส�ำหรบั การจัดเกบ็ ฐานข้อมูล
เว็บไซต์ SQLite
4 Android App Development ฉบับสมบูรณ์
z Media Support เป็นส่วนสนับสนุนการท�ำงานแบบสื่อประสม หรือมัลติมีเดีย เช่น ออดิโอ
วิดโี อ และรปู ภาพ
z G SM Telephony เป็นส่วนรองรับการท�ำงานบนระบบโทรศัพท์เคลื่อนท่ีแบบ GSM (Global
System for Mobile Communications)
z Bluetooth, EDGE, 3G, WiFi เปน็ สว่ นรองรบั การทำ� งานกบั Bluetooth, EDGE (Enhanced Data
rates for GSM Evolution), 3G และ WiFi
z C amera, GPS, Compass, Accelerometer เปน็ สว่ นสนบั สนนุ การทำ� งานของระบบกลอ้ งถา่ ย
รูป, ระบบก�ำหนดต�ำแหนง่ บนโลก หรือ GPS (Global Positioning System), เขม็ ทศิ และการ
วัดอตั ราความเร่ง
z R ich Development Environment เป็นส่วนสนับสนุนฟังก์ชันต่างๆ ท่ีช่วยในการพัฒนา
แอพพลเิ คชนั เชน่ Emulator, Debugging Tool, Memory and Performance Profiling และ Plug in
สำ� หรบั เคร่ืองมือ Eclipse
สถาปตั ยกรรมของแอนดรอยด์ (Android Architecture)
สถาปัตยกรรมการออกแบบแอนดรอยด์ (Android Architecture) น้ันถกู แบง่ ออกเปน็ ลำ� ดบั ชนั้ หรอื
จะเรยี กวา่ Layer โดยทแ่ี ตล่ ะชนั้ จะเรยี กใชบ้ รกิ ารจากระดบั ชน้ั ทอี่ ยดู่ า้ นลา่ งของตวั เอง ซง่ึ สามารถแบง่ ออกเปน็
4 ชนั้ หลกั คอื ชนั้ ลนี กุ ซเ์ คอรเ์ นล (Linux Kernel), ชน้ั ไลบรารี (Libraries), ชนั้ แอพพลเิ คชนั เฟรมเวริ ค์ (Application
Framework) และชั้นแอพพลิเคชนั (Application)
สถาปตั ยกรรม Android
z ช นั้ แอพพลเิ คชนั (Application) ช้นั นเ้ี ป็นชน้ั บนสุดของโครงสรา้ ง Android ซ่งึ เป็นส่วนของ
แอพพลเิ คชนั ทพ่ี ฒั นาขนึ้ มาใชง้ าน เชน่ แอพพลเิ คชนั รบั สง่ อเี มล, แอพพลเิ คชนั โทรศพั ท์ (Phone
Dial), แอพพลเิ คชนั เวบ็ บราวเซอร์ (Web Browser) เปน็ ตน้ ทง้ั นโ้ี ปรแกรมในชนั้ แอพพลเิ คชนั นน้ั
จะอยใู่ นรูปแบบของไฟล์ .apk ซึง่ โดยทั่วไปแล้วจะอยใู่ นไดเร็คทอรี data/app ของโทรศัพท์
สถาปัตยกรรมชั้นแอพพลเิ คชัน
ตัวอย่างแอพพลิเคชนั
บทท่ี 1 รู้จักแอนดรอยด์ (Android) 5
แอพพลเิ คชนั และวดิ เจต็ (Widget) เหมอื นกนั คอื เปน็ โปรแกรมทถี่ กู พฒั นาขน้ึ เหมอื นกนั แตจ่ ะตา่ งกนั
ทแ่ี อพพลเิ คชนั นนั้ จะทำ� งานโดยใชพ้ น้ื ทเ่ี ตม็ จอ (Full Screen) แตใ่ นสว่ นของวดิ เจต็ หรอื บางครง้ั เรยี กวา่
แก็ดเจ็ต (Gadget) จะท�ำงานบนพ้ืนท่ีขนาดเล็กไม่เต็มหน้าจอ
z ช ั้นแอพพลิเคชันเฟรมเวิร์ค (Application Framework) โดยปกติแล้วนักพัฒนาสามารถ
เรยี กใชง้ าน Android ผา่ น API (Application Programming Interface) ได้ ซงึ่ Android ไดอ้ อกแบบ
ไวเ้ พอ่ื ลดความซำ�้ ซอ้ นในการใชง้ านซำ�้ ของ Application Component ซงึ่ มตี วั อยา่ งแอพพลเิ คชนั
เฟรมเวิร์คดงั น้ี
| View System เปน็ ส่วนควบคมุ การท�ำงานสำ� หรบั การสรา้ งแอพพลิเคชนั เช่น lists, grids,
text boxes, buttons และ embeddable web browser
| Location Manager เป็นสว่ นจดั การคา่ ตำ� แหน่งของเครื่องอปุ กรณพ์ กพาเคลือ่ นท่ี
| Content Provider เปน็ สว่ นควบคมุ การเขา้ ถงึ ของขอ้ มลู ทมี่ กี ารใชง้ านรว่ มกนั (Share Data)
ระหว่างแอพพลิเคชนั ที่แตกต่างกนั เช่น ขอ้ มลู ผใู้ ช้ (Contact)
| R esource Manager เปน็ สว่ นจดั การการเขา้ ใชข้ อ้ มลู ตา่ งๆ ทไ่ี มใ่ ชโ่ คด้ เชน่ localized strings,
graphics และ layout ซึ่งจะอยู่ในไดเร็คทอรี res/
ทั้งน้ขี ้อมูลตา่ งๆ ในส่วนนี้จะถูกคอมไพล์ และผนวกเขา้ กับโปรแกรมทีเ่ ขียนขึน้ ณ เวลาการ Build
โดยแอนดรอยด์จะใช้เครื่องมอื adpt สำ� หรับการคอมไพล์ และหลงั จากการคอมไพล์แล้วจะสร้างคลาสทีช่ อื่ ว่า
R ซง่ึ เป็นส่วนท่รี ะบุถงึ ขอ้ มลู ต่างๆ ท่ใี ช้อ้างอิงสำ� หรับโปรแกรมท่ถี ูกพัฒนาข้นึ
| Notification Manager เปน็ สว่ นควบคมุ อเี วนต์ (Event) ตา่ งๆ ทแี่ สดงบนแถบสถานะ (Status
bar) เช่น ในกรณีทไี่ ดร้ บั ขอ้ ความและการแจง้ เตอื นตา่ งๆ
| Activity Manager เป็นสว่ นควบคุม Life Cycle ของแอพพลเิ คชัน
สถาปตั ยกรรมชั้นแอพพลิเคชันเฟรมเวริ ์ค
API (Application Program Interface) อ่านว่า เอพไี อ หรือสว่ นต่อประสานโปรแกรมประยกุ ตค์ ือ
วธิ กี ารเฉพาะสำ� หรบั การเรยี กใชง้ านระบบปฏบิ ตั กิ ารหรอื แอพพลเิ คชนั อนื่ ๆ ซงึ่ ทำ� หนา้ ทเ่ี ชอื่ มตอ่ การทำ� งาน
ระหวา่ งแอพพลเิ คชนั กบั ระบบปฏบิ ตั กิ าร ทง้ั นก้ี ารทแ่ี อพพลเิ คชนั จะเชอ่ื มตอ่ การทำ� งานกบั ระบบปฏบิ ตั กิ าร
ไดน้ นั้ จำ� เปน็ ตอ้ งมี API เปน็ ตวั เชอ่ื ม ซง่ึ หากไมม่ กี ารเปดิ เผย API ของระบบปฏบิ ตั กิ ารออกมาแลว้ ผทู้ พี่ ฒั นา
แอพพลิเคชันจะมีความล�ำบาก เม่ือต้องการพัฒนาแอพพลิเคชันให้มีความเข้ากันได้กับระบบปฏิบัติการ
ไดอ้ ยา่ งมปี ระสิทธิภาพ
6 Android App Development ฉบับสมบูรณ์
z ชัน้ ไลบรารี (Library) แอนดรอยด์ได้รวบรวมกลุ่มของไลบรารีต่างๆ ท่ีส�ำคัญและมีความจ�ำเป็น
ต่อการพัฒนาโปรแกรมเอาไวม้ ากมาย ซงึ่ ถูกเขียนไว้ด้วยภาษา C และ C++ โดยตวั อยา่ งของ
ไลบรารีท่ีส�ำคญั ทผ่ี ูอ้ ่านควรรู้คือ
| S ystem C library เปน็ กลมุ่ ของไลบรารมี าตรฐานทอ่ี ยบู่ นพนื้ ฐานของภาษา C ไลบรารี (libc)
| M edia Libraries เป็นกลุ่มการท�ำงานมัลติมีเดีย เช่น ออดิโอ วิดีโอ รวมถึงรูปภาพต่างๆ
เช่น ไฟล์สกลุ MPEG4, H.264, MP3, AAC, AMR, JPG และ PNG
| S urface Manager เปน็ กลมุ่ การจดั การรูปแบบของหนา้ จอ การวาดหน้าจอ
| 2D/3D library เปน็ กลุม่ ของกราฟกิ แบบ 2 มติ ิ หรอื SGL (Scalable Graphics Library)
และแบบ 3 มติ ิ หรือ OpenGL
| F reeType เป็นกลุ่มของบิตแมป (Bitmap) และเวคเตอร์ (Vector) ส�ำหรับการเรนเดอร์
(Render) ภาพ
| SQLite เปน็ กลมุ่ ของฐานขอ้ มลู ซงึ่ เปน็ ระบบฐานขอ้ มลู ทใ่ี ชเ้ ชน่ เดยี วกนั กบั ซอฟตแ์ วร์ Firefox
และ Apple iPhone ทง้ั นน้ี กั พฒั นาสามารถใชฐ้ านขอ้ มลู นเี้ กบ็ ขอ้ มลู ของแอพพลเิ คชนั ตา่ งๆ ได้
| Browser Engine เปน็ กลมุ่ ของการแสดงผลบนเวบ็ บราวเซอรโ์ ดยอยบู่ นพนื้ ฐานของ WebKit
ซง่ึ กจ็ ะมีลกั ษณะคลา้ ยคลึงกนั กบั Google Chrome, Safari และ Nokia S60
สำ� หรับการเรยี กใชแ้ อพพลเิ คชนั ต่างๆ ในชัน้ ไลบรารี จะไม่สามารถเรยี กใช้แอพพลเิ คชนั ในตัวเองได้
โดยจะต้องเรียกใช้แอพพลิเคชันในช้ันที่สูงกว่าเท่าน้ันจึงจะสามารถเรียกใช้ได้ นอกจากนี้ในช้ันไลบรารีนี้
Android ยงั แบง่ เปน็ ช้ันยอ่ ยท่ีเรยี กว่า Android Runtime ซึ่งประกอบไปด้วย 2 สว่ นหลักคอื Dalvik VM และ
Core Java Library
| Dalvik VM (Virtual Machine) สว่ นน้ถี ูกเขยี นด้วยภาษา Java เพื่อใชเ้ ฉพาะการใชง้ าน
อปุ กรณพ์ กพาเคลอ่ื นท่ี อยา่ งไรกต็ ามสง่ิ ทแ่ี ตกตา่ งจาก Java VM (Virtual Machine) คอื Dalvik
VM ซึ่งจะรันไฟล์ .dex ทีค่ อมไพลม์ าจากไฟล์ .class และ .jar โดยมี tool ที่ชอ่ื ว่า dx ท�ำหนา้ ที่
ในการบบี อัดคลาส Java ทั้งน้ไี ฟล์ .dex จะมขี นาดกะทดั รัดและเหมาะสมกับอปุ กรณ์พกพา
มากกว่า .class โดยเฉพาะอย่างยง่ิ ประสิทธิภาพในการใช้พลังงานจากแบตเตอรี่
| C ore Java Library สว่ นนเี้ ป็นไลบรารีมาตรฐาน แตก่ ็จะมคี วามแตกต่างจากไลบรารขี อง
Java SE (Java Standard Edition) และ Java ME (Java Mobile Edition)
สถาปัตยกรรมช้นั ไลบรารี
บทท่ี 1 รู้จักแอนดรอยด์ (Android) 7
ความแตกตา่ งระหวา่ ง Java VM และ Dalvik VM คอื การแปลค�ำสงั่ หรือมีอนิ เตอร์พรเี ตอร์ (Inter
preter) ทแี่ ตกตา่ งกนั โดยสว่ นของ Java VM นน้ั จะมรี ปู แบบเปน็ แบบสแตค็ (Stack) แตส่ ว่ นของ Dalvik
VM น้ันจะเป็นแบบรีจิสเตอร์ (Register)
โดยท่ี Java VM นนั้ จะเปน็ การอา่ น byte code (class) ของวาจา จากนน้ั จะแปล byte code เหลา่ นน้ั
ให้เป็นค�ำส่ังต่างๆ และโหลดเข้าไปเก็บไว้ในหน่วยความจ�ำแบบสแต็ค
แตใ่ นสว่ น Dalvik VM นน้ั จะมกี ารทำ� งานทค่ี ลา้ ยคลงึ กนั เพยี งแตจ่ ะเปน็ การโหลดคำ� สง่ั ตา่ งๆ เขา้ ไป
เก็บไว้ในหน่วยความจ�ำแบบรีจิสเตอร์แทน
โดยภาพรวมแลว้ ทง้ั 2 ประเภทจะมกี ารทำ� งานทคี่ ลา้ ยกนั แต่ Java VM นนั้ จะมกี ารสรา้ งคำ� สงั่ ตา่ งๆ
มากกว่า ซ่ึงท�ำให้ไม่เหมาะสมกับการน�ำไปประยุกต์ใช้ในอุปกรณ์เคล่ือนท่ี ซึ่งโดยปกติแล้วจะมีทรัพยากร
ท่ีจ�ำกัด เช่น ขีดจ�ำกัดของ CPU (Central Processing Unit) และ RAM (Random Access Memory)
z ช ั้นลีนกุ ซ์เคอรเ์ นล (Linux Kernel) ระบบ Android อยู่บนพืน้ ฐานของระบบปฏบิ ตั กิ าร Linux
โดยชนั้ Linux Kernel นน้ั มฟี งั กช์ นั การทำ� งานหลายๆ สว่ น ซงึ่ แตล่ ะสว่ นถกู พฒั นาขน้ึ ดว้ ยภาษา C
เชน่ การจดั การหนว่ ยความจำ� (Memory Management), การจดั การโพรเซส (Process Manage-
ment), การเชื่อมต่อเครือข่าย (Networking) และฟังก์ชันการท�ำงานส่วนอ่ืนที่เก่ียวกับระบบ
ปฏิบัติการ ท้ังนี้นักพัฒนาจะไม่มีสิทธิ์เข้าถึงส่วนนี้ได้โดยตรง อย่างไรก็ตามนักพัฒนาสามารถ
เขา้ ถงึ ระบบปฏบิ ตั กิ าร Linux ไดจ้ ากชดุ คำ� สงั่ Command Prompt เชน่ adb shell ซงึ่ จะสามารถใช้
เคร่อื งมือตา่ งๆ ได้ เช่น การเขา้ ดรู ะบบไฟล์ (File System), โพรเซสการคดั ลอกไฟล์ (Copy File)
เป็นตน้
สถาปัตยกรรมชนั้ Linux Kernel
Linux Kernel ถกู สรา้ งขนึ้ โดย ลนิ สุ เบเนดกิ ต์ โตรว์ ลั ดส์ (Linus Benedict Torvalds) ในปี ค.ศ.1991
ซ่ึงขณะน้ันศึกษาอยู่ท่ีมหาวิทยาลัยเฮลซิงกิ ประเทศฟินแลนด์ (The University of Helsinki)
8 Android App Development ฉบับสมบูรณ์
จากทก่ี ล่าวมาพอสรุปเป็นภาพของสถาปัตยกรรม Android ไดด้ ังนี้
สถาปตั ยกรรมของ Android
ส่วนประกอบของแอพพลิเคชัน (Application Com-
ponent)
คุณลักษณะอย่างหน่ึงของแอนดรอยด์ก็คือ เป็นแอพพลิเคชันท่ีสามารถใช้เป็นส่วนประกอบของ
แอพพลิเคชนั อ่นื ๆ ได้ ตัวอยา่ งเช่น ถ้าผูอ้ า่ นต้องการสร้างแอพพลิเคชันให้แสดงการเลือ่ นของรายการรูปภาพ
โดยที่ผู้อ่านอาจมีแอพพลิเคชันส่วนอื่นท่ีได้พัฒนาไว้แล้ว ผู้อ่านสามารถเรียกใช้แอพพลิเคชันในส่วนท่ีมีอยู่มา
พฒั นาต่อได้ โดยท่ีไม่จ�ำเป็นตอ้ งพัฒนาขึน้ มาเอง เพ่ือความสะดวกและรวดเรว็ ในการพฒั นาแอพพลิเคชัน ซงึ่
เรียกแอพพลเิ คชนั เหลา่ นั้นวา่ Application Component
ซงึ่ Application Component ของแอนดรอยดส์ ามารถแบง่ ออกเปน็ 4 สว่ นคอื Activity, Service, Content
Provider และ Broadcast and Intent Receiver
z A ctivity คอื หน้าจอทีต่ ิดต่อกบั ผู้ใช้ ทัง้ นใ้ี นแตล่ ะแอพพลเิ คชันอาจจะมไี ดม้ ากกว่า 1 หน้าจอ
หรอื 1 Activity ซง่ึ แตล่ ะ Activity จะทำ� หนา้ ทเ่ี ก็บสถานะการใช้งานในสว่ นตา่ งๆ ตวั อย่างเชน่
| ใ นการแสดงรายการเมนู นักพัฒนาสามารถเลือกให้รายการเมนูที่แสดงออกมามีภาพและ
ค�ำบรรยายใต้ภาพได้
| สำ� หรับแอพพลิเคชนั ส่งข้อความอาจจะมี Activity หนง่ึ ท่ีแสดงรายการของสว่ นติดตอ่ ในการ
สง่ ขอ้ ความ อกี Activity หนึง่ จะเปน็ สว่ นของการเลอื กการตดิ ตอ่ และ Activity อนื่ ๆ จะทำ�
หน้าทดี่ ขู ้อความเกา่ ที่ถูกส่งมาแล้ว เปน็ ต้น
z Service คือ งานหรอื บรกิ ารตา่ งๆ ทีท่ �ำงานอยเู่ บือ้ งหลงั เชน่ Service ท่ีเปดิ ดนตรีอยู่ ขณะที่ผู้
ใชง้ านทำ� งานอ่นื ๆ หรือใช้แอพพลเิ คชันอืน่ ๆ ไปดว้ ย
บทท่ี 1 รู้จักแอนดรอยด์ (Android) 9
z Broadcast and Intent Receiver คอื การตอบสนอง ซึ่งโดยปกตแิ ล้ว Broadcast Receiver
จะเป็นการตอบสนองตอ่ การเกดิ อีเวนต์ของระบบในวงกวา้ ง เชน่ การประกาศเตอื นวา่ แบตเตอรี่
ใกลจ้ ะหมดแล้ว เป็นต้น นอกจากน้ี Intent Receiver เป็นสว่ นทำ� ให้แอพพลิเคชันอนื่ ๆ เขา้ ถึงการ
ท�ำงานของ Activity และ Service ซึ่งในการปฏบิ ัตงิ านแตล่ ะอยา่ งเปน็ การตอบสนองการรอ้ งขอ
จากข้อมูลหรือบริการของ Activity อ่นื ๆ
z Content Provider คือ ส่วนของการให้บริการข้อมูลส�ำหรับแต่ละแอพพลิเคชัน ทั้งนี้ข้อมูล
สามารถเก็บอยู่ในรูปแบบของระบบไฟล์ หรือฐานข้อมูลก็ได้ เช่น Google สามารถเข้าใช้งาน
ข้อมูลรว่ มกันกบั ผใู้ ช้งานได้ในแอพพลิเคชนั ทตี่ ้องการขอ้ มลู ของผูใ้ ช้งาน
การอนญุ าตใหก้ ารเขา้ ใชง้ านในแตล่ ะสว่ นประกอบของแอพพลเิ คชนั (Activating Component) หรอื
Intent คือ วิธีที่อธิบาย Action ต่างๆ เช่น การเลือกรูปภาพ การเปิดโปรแกรมฟังเพลง โดยทั่วไปแล้ว
Intent จะถกู ใชส้ ำ� หรบั การสรา้ งแอพพลเิ คชนั ใหมจ่ ากแอพพลเิ คชนั เดมิ โดยทนี่ กั พฒั นาไมจ่ ำ� เปน็ ตอ้ งสรา้ ง
ใหม่ทั้งหมด (Mobile Mashup) ซึง่ Intent อนญุ าตใหน้ กั พัฒนาสามารถตดิ ต่อระหวา่ งแอพพลิเคชนั และ
บริการท่ีแตกต่างกันได้
โดยปกตแิ ลว้ ในแตล่ ะแอพพลเิ คชนั จะทำ� งานแยกกนั ในแตล่ ะโพรเซส (Process) ซง่ึ มกี ารทำ� งานท่ี
แยกจากกันโดยชัดเจน ในกรณีที่นักพัฒนาต้องการเข้าถึงการท�ำงานหรือการขอสิทธิ์เข้าใช้นั้น นักพัฒนา
จะต้องก�ำหนดการขอเข้าใช้ท่ีไฟล์ AndroidManifest.xml เช่น
z I NTERNET เป็นการอนญุ าตให้เขา้ ใชอ้ ินเทอร์เนต็
z R EAD_CONTACTS เปน็ การอนุญาตใหอ้ ่านขอ้ มลู ผใู้ ช้
z W RITE_CONTACTS เป็นการอนญุ าตให้เขียนข้อมลู ผใู้ ช้
z RECEIVE_SMS เปน็ การอนุญาตให้ตรวจสอบการรบั SMS (Short Message Service)
z A CCESS_COARSE_LOCATION เปน็ การอนญุ าตใหใ้ ชก้ ารอา้ งองิ ตำ� แหนง่ แบบครา่ วๆ (Coarse)
z ACCESS_FINE_LOCATION เปน็ การอนญุ าตใหใ้ ชก้ ารอา้ งองิ ตำ� แหนง่ ทมี่ คี วามถกู ตอ้ งสงู (Fine)
เชน่ GPS
วงรอบชีวิตของแอพพลิเคชัน (Application Life
Cycle)
โดยปกตแิ ลว้ แอพพลเิ คชนั จะทำ� งานแยกกนั ในแตล่ ะโพรเซส และในแตล่ ะโพรเซสอาจจะมี Activity/
Service ท่ที ำ� งานอยู่มากกว่า 1 Activity/Service ดังนั้น ในแตล่ ะแอพพลิเคชนั อาจจะมมี ากกว่า 1 Activity ซงึ่
ในการเรม่ิ ท�ำงานของ Activity จะเรม่ิ ดว้ ย startActivity() ส�ำหรบั แบบซิงโครนสั (Synchronous) และจะเรม่ิ
ดว้ ย startSubActivity() สำ� หรบั แบบอะซงิ โครนสั (Asynchronous) โดยในแตล่ ะ Activity จะมวี งรอบชวี ติ (Life
Cycle) ทแ่ี ยกจากกนั โดยชัดเจน ซ่งึ มีสถานะการท�ำงานหลกั ดังนี้
10 Android App Development ฉบับสมบูรณ์
z onCreate (Bundle savedInstanceState) ส่วนนจี้ ะถูกเรียกใชง้ านเมื่อเริ่มทำ� งาน ในกรณีท่ี
มกี ารเรยี กใชง้ านเมธอด (Method) น้ี Android Framework จะนำ� Bundle object ไปบนั ทกึ ไวใ้ น
Activity ก่อนที่ Activity จะทำ� งาน ซง่ึ จากนัน้ จะตามดว้ ยฟงั ก์ชนั onStart()
z onStart() ส่วนนี้เป็นการระบุว่า Activity นั้นๆ จะถูกแสดงข้ึนมา จากน้ันสถานะจะถูกย้ายไป
เปน็ สถานะ onResume แตถ่ ้า Activity น้ันไม่สามารถท�ำงานไดด้ ้วยเหตุผลบางประการ สถานะ
จะถูกยา้ ยไปเปน็ สถานะ onStop
z o nRestart() ส่วนน้ีเป็นการระบุว่า Activity นั้นจะถูกแสดงข้ึนมาอีกครั้งหน่ึง ซึ่งจะตามด้วย
สถานะ onStart()
z onResume() ส่วนนี้จะถกู เรียกเมอื่ Activity น้ันๆ มกี ารติดต่อปฏิสมั พันธ์กับผ้ใู ช้งาน เชน่ นกั
พฒั นาต้องการเรยี ก Activity นั้นให้ข้นึ มาทำ� งานอกี รอบหนงึ่ หลงั จากที่ Activity น้ันอยู่ในสถานะ
onPause
z onPause() สว่ นนจ้ี ะถูกเรยี กใชเ้ มอ่ื Activity น้ันๆ จะถกู เปลยี่ นไปเปน็ การทำ� งานทางเบื้องหลัง
(Background)
z o nStop() สว่ นนจี้ ะถูกเรยี กใชเ้ ม่อื ผู้ใช้ไมต่ อ้ งใชง้ าน Activity น้นั ๆ ในช่วงระยะเวลาหน่งึ ๆ ซึ่งจะ
ตามดว้ ยสถานะ onRestart() เมอื่ ตอ้ งการกลบั มาทำ� Activity นน้ั อกี ครงั้ หนงึ่ หรอื ตามดว้ ยสถานะ
onDestroy() เมอื่ ต้องการปิด Activity นั้นๆ
z onDestroy() สว่ นนจี้ ะถกู เรยี กเมอ่ื มีการปิดการท�ำงานของแต่ละ Activity
Application Life Cycle 11
บทท่ี 1 รู้จักแอนดรอยด์ (Android)
ส�ำหรับ Android นั้น แอพพลิเคชันท่ีอยู่เบ้ืองหน้าจะมีได้เพียง 1 หน้าจอเท่านั้น ซ่ึงโดยปกติแล้ว
จะใชพ้ ืน้ ท่ที ั้งหน้าจอของโทรศัพทเ์ คลือ่ นท่ี ยกเวน้ ส่วนของแถบสถานภาพ หรือแถบสถานะ (Status bar)
แตอ่ ยา่ งไรกต็ าม ผใู้ ชส้ ามารถเลอื กหรอื เปลยี่ นแอพพลเิ คชนั ขนึ้ มาใชง้ านได้ ทง้ั นแี้ อพพลเิ คชนั ทงั้ หมด
จะถกู เกบ็ ค่าสถานะไว้ท่ีแอพพลิเคชนั สแต็ค (Application Stack) ซง่ึ ควบคมุ โดย Activity Manager
ดังน้นั เม่อื ผใู้ ชค้ ลิกปุม่ กลับ หรอื Back ในสว่ นของ Activity Manager กจ็ ะดงึ เอาแอพพลิเคชนั บน
สแต็คข้ึนมาท�ำงาน ท้ังน้ีผู้อ่านสามารถศึกษาเพิ่มเติมได้จากเว็บไซต์ http://developer.android.com/
guide/topics/fundamentals.html
สรุปท้ายบท
ในบทน้ีเป็นการอธิบายถึงพื้นฐานและทฤษฎีเบ้ืองต้นของแอนดรอยด์ รวมไปถึงสถาปัตยกรรม
ส่วนประกอบของแอพพลเิ คชัน และวงรอบชวี ิตของแอพพลเิ คชัน
แบบฝึกหัดท้ายบท
z จ งอธบิ ายความแตกต่างระหวา่ ง Content Provider และ Resource Manager
z จงอธบิ ายความสัมพันธ์ระหว่างแอพพลิเคชัน, โพรเซส และแอค็ ทวิ ติ ี้
12 Android App Development ฉบับสมบูรณ์
2
การติดต้ังเครื่องมือส�ำหรับการพัฒนา
แอพพลิเคชันบน Android
เน้ือหาในบทน้ี เพ่ือให้ผู้อ่านได้เรียนรู้และสามารถติดต้ังเคร่ืองมือต่างๆ ท่ีจ�ำเป็นส�ำหรับใช้ในการ
พฒั นาแอพพลเิ คชนั บน Android ได้ ซงึ่ ถอื ไดว้ า่ เป็นก้าวแรกสำ� หรบั การเร่ิมต้นพฒั นาแอพพลเิ คชนั บน Android
โดยทั่วไปแล้วแอพพลิเคชนั ใน Android จะพฒั นาด้วยภาษา Java ดังนน้ั ผู้อา่ นจะต้องมคี วามคุ้นเคย
กับภาษา รวมไปถึงการใช้งานฟังก์ชันต่างๆ ที่จ�ำเป็น เน่ืองจากในหนังสือเล่มน้ีจะไม่ได้อธิบายถึงพ้ืนฐานของ
การเขียนโปรแกรมภาษา Java (ภาคผนวกจะกล่าวถึงรายละเอียดเชิงโครงสร้างและหลักการท่ีส�ำคัญเบ้ืองต้น
ของภาษาจาวาเท่านน้ั )
ในหนังสือเล่มนี้ผู้เขียนจะเริ่มอธิบายต้ังแต่การติดตั้งการใช้งานเคร่ืองมือต่างๆ โดยมีสมมติฐานว่า
ผู้อา่ นไมม่ ีความรู้สำ� หรับการพฒั นาแอพพลเิ คชันบน Android มากอ่ น ดงั น้ัน เน้อื หาในบทที่ 2 จะประกอบด้วย
เนอ้ื หาดังน้ี
1. การติดตัง้ JDK (Java Development Kit)
2. การตดิ ตั้งโปรแกรม Eclipse
3. การติดตง้ั Android SDK (Android Software Development Kit)
4. การติดตง้ั ADT (Android Development Tool)
5. การสรา้ ง AVD (Android Visual Device)
สำ� หรับขน้ั ตอนการติดตง้ั เครื่องมอื ตา่ งๆ นัน้ ผเู้ ขยี นมีสมมติฐานวา่ ผอู้ า่ นมีการเชอื่ มต่อกบั อินเทอรเ์ นต็
(Internet) ตลอดระยะเวลาในการติดตง้ั
ในหนงั สอื เลม่ นม้ี กี ารอา้ งองิ ถงึ เครอ่ื งมอื ตา่ งๆ มากมาย ไมว่ า่ จะเปน็ โปรแกรม Eclipse หรอื Android
SDK ซึ่งมีเวอร์ชันต่างๆ ให้ใช้งานมากมาย
ดังนั้น การพัฒนาแอพพลิเคชันภายในหนังสือเล่มนี้ ผู้เขียนพัฒนาโดยใช้โปรแกรมดังนี้
z จ าวา JDK เวอรช์ นั 7 (jdk-7u2-windows-i586.exe)
z โ ปรแกรม Eclipse เวอรช์ นั Eclipse IDE for Java Developer (eclipse-jee-indigo-SR1-win32.
zip) ทท่ี �ำงานอย่บู นระบบปฏิบัตกิ ารวินโดวส์ Windows 7 32 Bit
z Android SDK เวอรช์ นั 16 (android-sdk_r16-windows.zip)
z ADT เวอรช์ ัน 16 (ADT-16.0.0.zip)
โดยทดสอบการทำ� งานของแอพพลิเคชนั บนเคร่อื งโทรศัพท์จ�ำลองเวอร์ชัน Android 4.0.3 (หรือใน
บางตัวอย่างพัฒนาโดยใช้ Android SDK และทดสอบการท�ำงานของแอพพลิเคชันบนเคร่ืองโทรศัพท์
Samsung Galaxy Nexus ที่มี Android 4.0 ติดตั้งอยู่)
ซงึ่ เมอ่ื ผอู้ า่ นไดต้ ดิ ตงั้ หรอื ใชง้ านโปรแกรมตา่ งๆ กอ็ าจจะมกี ารเปลย่ี นแปลงตามเทคโนโลยี อยา่ งไร
ก็ตามโดยทั่วไปแล้วการท�ำงานก็จะมีความคล้ายคลึงกัน อาจจะมีการปรับแต่งพารามิเตอร์บางอย่างเพ่ือ
ให้มีความเข้ากันได้
ท้ังนี้แอพพลิเคชันทุกแอพพลิเคชันที่น�ำเสนอภายในหนังสือเล่มนี้ ผู้อ่านสามารถน�ำไปพัฒนาบน
Android เวอร์ชันใดก็ได้ ซ่ึงมีข้ันตอนหรือวิธีการไม่แตกต่างกันมากนัก
ในที่น้ีผู้เขียนจะแถมโปรแกรมทุกตัวมาให้ใน CD ท้ายเล่ม เพื่อให้ผู้อ่านพร้อมศึกษาการพัฒนา
แอพพลิเคชันได้ในทันที และมีโค้ดตัวอย่างแอพพลิเคชันในบางบทมาใน CD ด้วย เพ่ือให้ผู้อ่านใช้ใน
การตรวจสอบความถูกต้อง แต่ผู้เขียนขอละโค้ดในบางตัวอย่างไว้ เน่ืองจากต้องการให้ผู้อ่านได้ลอง
เขียนโค้ดและพัฒนาแอพพลิเคชันนั้นๆ ด้วยตัวเอง
การติดตั้ง JDK (Java Development Kit)
เนอ่ื งจากแอพพลิเคชนั บน Android ถูกพฒั นาด้วยภาษา Java จงึ มคี วามจ�ำเป็นทีผ่ อู้ า่ นจะต้องตดิ ต้งั
JDK (Java Development Kit) ทง้ั นผี้ อู้ า่ นสามารถใช้ JDK ตงั้ แตเ่ วอรช์ นั 5 ขน้ึ ไปได้ เนอ่ื งจาก Android SDK ทใ่ี ช้
ประกอบกบั JDK นน้ั จะรองรบั JDK ตง้ั แตเ่ วอรช์ นั 5 ขน้ึ ไปเทา่ นน้ั ซงึ่ ผอู้ า่ นสามารถตรวจสอบไดจ้ ากเวบ็ ไซต์ http://
developer.android.com/sdk/requirements.html โดยการติดตัง้ JDK นัน้ ผู้อ่านสามารถดาวนโ์ หลดตวั ตดิ ตั้ง
ไดจ้ ากเวบ็ ไซต์ http://www.oracle.com/technetwork/java/javase/downloads ซ่ึงมีขน้ั ตอนดังน้ี
1 คลกิ
14 Android App Development ฉบับสมบูรณ์
เลอื ก 2
3 คลิก
ในหนังสือเลม่ นีผ้ ู้เขียนไดใ้ ช้ JDK เวอรช์ ัน 7 (jdk-7u2-windows-i586.exe) ในการพัฒนาบนระบบ
ปฏิบัติการ Windows 7 และเม่ือผู้อ่านดาวน์โหลดชุดติดตั้งมาเรียบร้อยแล้ว ก็สามารถติดตั้งได้ตามล�ำดับ
ขน้ั ตอนตอ่ ไปน้ี
ผอู้ า่ นสามารถตรวจสอบเครอื่ งคอมพวิ เตอรข์ องผอู้ า่ นกอ่ นไดว้ า่ มกี ารตดิ ตง้ั JDK อยกู่ อ่ นแลว้ หรอื ไม่
ซึ่งผู้อ่านไม่มีความจ�ำเป็นที่จะต้องติดต้ังซ้�ำอีกคร้ัง หรือในกรณีที่ JDK ท่ีติดต้ังอยู่เป็นเวอร์ชันก่อนหน้าน้ี
ก็สามารถติดต้ังซ�้ำได้
ผู้อ่านสามารตรวจสอบการติดต้ังได้โดยพิมพ์ค�ำส่ัง "java -version" ท่ี Command Prompt โดย
ค�ำส่ังน้ีจะแสดงถึงเวอร์ชันของ JDK ท่ีได้ด�ำเนินการติดต้ังไว้
บทท่ี 2 การติดต้ังเครื่องมือส�ำหรับการพัฒนาแอพพลิเคชันบน Android 15
1. เริ่มต้นใหผ้ อู้ ่านดบั เบิลคลิกไฟล์ติดตั้ง JDK
2. จะปรากฏหนา้ ตา่ ง Java SE Development Kit ขนึ้ มา
3. คลกิ ปุ่ม
3 คลกิ
4. เลอื กต�ำแหน่งตดิ ตง้ั โปรแกรม ในที่นแ้ี นะน�ำให้เลือกคา่ ดีฟอลตท์ ี่โปรแกรมก�ำหนดไว้
5. คลิกปุ่ม
5 คลกิ
6. ดำ� เนนิ การตดิ ต้งั โปรแกรม
16 Android App Development ฉบับสมบูรณ์
7. เมอื่ ติดตง้ั สมบูรณ์ ใหค้ ลกิ ปุ่ม
7 คลิก
8. เมื่อติดต้ังโปรแกรมเสร็จสมบูรณ์ ผู้อ่านควรจะตรวจสอบการติดต้ังอีกคร้ังโดยพิมพ์ค�ำส่ัง
“java -version” ที่ Command Prompt โดยคำ� สง่ั นจี้ ะแสดงถงึ เวอรช์ นั ของ JDK ทไี่ ดด้ ำ� เนนิ การ
ตดิ ตั้งเรียบรอ้ ยแลว้
ผอู้ า่ นทเ่ี รมิ่ พฒั นาแอพพลเิ คชนั บน Android อาจจะมคี วามสบั สนกบั คำ� วา่ ระบบปฏบิ ตั กิ าร เนอ่ื งจาก
ในท่ีนี้มีระบบปฏิบัติการ 2 ระบบดังนี้
z ร ะบบปฏบิ ตั กิ าร Windows คอื ระบบปฏบิ ตั กิ ารทใี่ ชใ้ นการพฒั นาแอพพลเิ คชนั โดยมี JDK และ
เครอ่ื งมือต่างๆ ทำ� งานอยู่บนระบบปฏบิ ตั ิการนี้
z ระบบปฏิบตั กิ าร Android คือ ระบบปฏิบัตกิ ารที่ใชง้ านส�ำหรบั แอพพลิเคชันทส่ี รา้ งขึ้น
ดงั นน้ั ในการพฒั นาแอพพลเิ คชนั บนระบบปฏบิ ตั กิ าร Windows เราจะใชโ้ ทรศพั ทจ์ ำ� ลอง (Emulator)
จ�ำลองโทรศัพท์ Android จริงข้ึนมา เพ่ือทดสอบการท�ำงานของแอพพลิเคชัน และเม่ือผู้อ่านได้น�ำ
แอพพลเิ คชนั ทพี่ ฒั นาเสรจ็ สน้ิ แลว้ ไปตดิ ตงั้ บนเครอ่ื งโทรศพั ทเ์ คลอ่ื นทจ่ี รงิ แอพพลเิ คชนั นนั้ กจ็ ะทำ� งานอยู่
บนระบบปฏิบัติการ Android
บทท่ี 2 การติดต้ังเครื่องมือส�ำหรับการพัฒนาแอพพลิเคชันบน Android 17
การติดตั้งโปรแกรม Eclipse
สำ� หรบั การพฒั นาแอพพลิเคชนั บน Android น้ันจะใชภ้ าษา Java ในการพัฒนา ซ่งึ ในทีน่ ้ผี ู้เขียนจะ
ใชโ้ ปรแกรม Eclipse เปน็ เคร่ืองมือในการพัฒนา โดยผู้อา่ นสามารถดาวนโ์ หลด Eclipse IDE ไดจ้ ากเวบ็ ไซต์
http://www.eclipse.org/downloads/ ดังรปู
1 คลกิ
เมื่อผู้อ่านเขา้ ไปยงั เวบ็ ไซตข์ อง Eclipse แล้วให้ผอู้ า่ นดาวน์โหลด Eclipse IDE for Java Developer
(eclipse-jee-indigo-SR1-win32.zip) ที่ท�ำงานอยู่บนระบบปฏิบตั ิการวินโดวส์ ในทนี่ ้ีผูเ้ ขยี นใช้ระบบปฏิบตั ิการ
Windows 7 32 Bit
คลิก 2
18 Android App Development ฉบับสมบูรณ์
สำ� หรับการติดต้งั Eclipse นนั้ จะไม่มีความซบั ซอ้ นเหมอื นกับการตดิ ต้งั JDK โดยการตดิ ตั้งจะเปน็
เพียงการคลายไฟล์ (Unzip) เท่านนั้ ในส่วนนผี้ ู้เขียนจะตดิ ตง้ั โปรแกรม Eclipse ไวท้ ีไ่ ดเร็คทอรี C:\eclipse\
ตำ�แหน่งตดิ ตง้ั โปรแกรม Eclipse
เร่ิมต้นเขียนโปรแกรมด้วย Eclipse
หัวข้อนีจ้ ะแนะนำ� การใชเ้ ครือ่ งมอื Eclipse สำ� หรับเขียนโปรแกรม และถอื เป็นการทดสอบการติดตัง้
JDK และ Eclipse วา่ สามารถใชง้ านไดจ้ รงิ ในกรณที ไ่ี มส่ ามารถเขยี นโปรแกรมดว้ ย Eclipse ได้ ใหผ้ อู้ า่ นกลบั ไป
ตรวจสอบวธิ ีการตดิ ตัง้ JDK และ Eclipse ใหมอ่ ีกครั้ง กอ่ นทจี่ ะด�ำเนินการติดต้งั Android SDK
ในทีน่ จ้ี ะทดสอบเขียนโปรแกรมแสดงข้อความ โดยมขี ั้นตอนการเขยี นโปรแกรมดังนี้
1. เปิดโปรแกรม Eclipse ขน้ึ มา จะปรากฏไดอะล็อกบ็อกซ์สอบถามตำ� แหน่งท่จี ะบนั ทกึ โปรเจก็ ต์
1.1 คลกิ เลอื กตำ�แหนง่ บนั ทึกโปรเจ็กต์
1.2 คลกิ
2. จะปรากฏหนา้ ต่างโปรแกรม Eclipse ขนึ้ มา ให้คลกิ เลือก Workbench
2 เลือก
บทท่ี 2 การติดตั้งเครื่องมือส�ำหรับการพัฒนาแอพพลิเคชันบน Android 19
3. Eclipse จะแสดงหน้าต่างหลักของโปรแกรมดังรปู
4. คลกิ เมนู Flie > New > Project...
4 เลอื ก
20 Android App Development ฉบับสมบูรณ์
5. จะปรากฏไดอะล็อกบอ็ กซ์ New
Project ข้นึ มา
6. คลิกเลือก Java/Java Project
7. คลกิ ปุม่
6 เลอื ก
9 ตงั้ ช่อื 7 คลิก
8. จะปรากฏไดอะลอ็ กบอ็ กซ์ New Java Project
ขน้ึ มา
9. ตัง้ ชื่อโปรเจก็ ต์
10. คลิกป่มุ
11. คลิกเลอื กตำ� แหนง่ บนั ทึกไฟล์โปรแกรม
12. คลิกป่มุ
10 คลกิ
11 คลิก
12 คลกิ
บทท่ี 2 การติดตั้งเคร่ืองมือส�ำหรับการพัฒนาแอพพลิเคชันบน Android 21
13. จะปรากฏโปรเจก็ ตใ์ น Package Explorer
13 แสดงโปรเจ็กต์
14. คลกิ ขวาทช่ี ่ือโปรเจก็ ต์ใน Package Explorer แล้วเลอื กค�ำส่งั New > Class
14 เลอื ก
22 Android App Development ฉบับสมบูรณ์
15. จะปรากฏไดอะล็อกบ็อกซ์ New 16 ตัง้ ชอื่
Java Class ข้นึ มา
16. ต้งั ชอื่ คลาส
17. คลิกเครื่องหมายถูกหน้า public
static void main(String[] args)
18. คลิกปุ่ม
คลิก 17 18 คลิก
19. จะปรากฏไฟลส์ กุล java ในโปรเจ็กต์ พร้อมโค้ดเร่มิ ต้นดงั รูป
19 แสดงไฟล์
บทท่ี 2 การติดต้ังเคร่ืองมือส�ำหรับการพัฒนาแอพพลิเคชันบน Android 23
20. เขยี นโค้ดเพ่ิมเตมิ ดงั นี้ 20 เขียนโคด้
21. คลกิ ป่มุ เพ่ือทดสอบการท�ำงาน
22. ได้ผลลพั ธด์ ังน้ี
21 คลกิ
22 แสดงผลลัพธ์
เนอื่ งจากผอู้ า่ นสามารถเขียนโปรแกรมภาษา Java ดว้ ย Eclipse ได้ ดังนั้น ถือได้ว่าการติดต้ัง JDK
และ Eclipse เสร็จสมบูรณ์
ก�ำหนดให้ Text Editors แสดงหมายเลขบรรทัด
ในการพัฒนาโปรแกรมท่มี ีขนาดใหญแ่ ละมีความซบั ซอ้ นสูง หาก Text Editors มีการแสดงหมายเลข
บรรทัดของโค้ด ก็จะช่วยให้ผู้พัฒนาโปรแกรมสามารถปรับปรุงหรือแก้ไขโปรแกรมได้ง่ายข้ึน โดยมีขั้นตอน
ก�ำหนดให้ Text Editors แสดงหมายเลขบรรทดั ดงั น้ี
1. คลิกเมนู Window > Preferences
เลอื ก 1
24 Android App Development ฉบับสมบูรณ์
2. จะปรากฏไดอะล็อกบ็อกซ์ 3 เลือก
Preferences ข้นึ มา
4 คลกิ
3. คลกิ เมนู General > Editors >
Text Editors
4. คลิกเคร่ืองหมายถูกหน้า
Show line numbers
5. คลิกปุม่
คลกิ 5
6. Text Editors แสดงหมายเลขบรรทัด
การติดต้ัง Android SDK (Android Software De-
velopment Kit)
เมื่อผู้อา่ นติดต้ัง JDK และ Eclipse เรียบร้อยแล้ว ผ้อู า่ นกส็ ามารถพฒั นาแอพพลิเคชันด้วยภาษา
Java ไดแ้ ลว้ ตอ่ ไปเปน็ การตดิ ตง้ั การเชอ่ื มตอ่ กบั Android SDK (Android Software Development Kit) ซงึ่ การ
ตดิ ตง้ั นน้ั ไมม่ คี วามซบั ซอ้ นมากนกั เพราะผเู้ ขยี นจะใช้ Plug-in ของ Eclipse เขา้ มารว่ มดว้ ย โดยใช้ ADT (Android
Development Tool) ซ่ึงจะอธบิ ายถึงรายละเอยี ดในหวั ข้อถดั ไป
บทท่ี 2 การติดตั้งเครื่องมือส�ำหรับการพัฒนาแอพพลิเคชันบน Android 25
ผอู้ า่ นสามารถดาวนโ์ หลด Android SDK ไดจ้ ากเวบ็ ไซต์ http://developer.android.com/sdk/index.html
และใหผ้ อู้ า่ นคลายไฟล์ (Unzip) android-sdk_r16-windows.zip นเ้ี พอื่ ตดิ ตงั้ Android SDK (เหมอื นกบั การตดิ ตงั้
Eclipse) ในท่ีน้ีผู้เขียนจะติดต้ัง Android SDK ไว้ทไี่ ดเร็คทอรี C:\android-sdk-windows
คลิก
ตำ�แหนง่ ตดิ ตง้ั Android SDK
ในที่นี้ยกตัวอย่างการใช้งาน Android SDK เวอร์ชัน 16 ซึ่งผู้อ่านสามารถใช้เวอร์ชันใดๆ ก็ได้
26 Android App Development ฉบับสมบูรณ์
การติดตั้ง ADT (Android Development Tool)
หลงั จากที่ผู้อา่ นไดต้ ดิ ต้ัง Android SDK เสรจ็ ส้ินแลว้ สว่ นเพิม่ เตมิ ท่ีสำ� คญั ที่จะชว่ ยให้ผู้อ่านสามารถ
พฒั นาแอพพลเิ คชนั ไดง้ า่ ยและสะดวกยงิ่ ขนึ้ กค็ อื เครอ่ื งมอื ADT (Android Development Tool) ทงั้ นี้ ADT เปน็
Plug-in ของ Eclipse ท่ีจะช่วยอ�ำนวยความสะดวกในการเตรียมเคร่ืองมือต่างๆ ท่ีจ�ำเป็นส�ำหรับการพัฒนา
แอพพลิเคชันไว้ให้ โดยที่ผู้อ่านไม่มีความจ�ำเป็นต้องปรับแต่งค่าต่างๆ ด้วยตัวเอง เช่น ในการสร้างโปรเจ็กต์
ใหม่ ADT จะเป็นตัวชว่ ยสร้างโปรเจ็กต์ต้นแบบโดยมีโคด้ เร่มิ ตน้ ทจ่ี �ำเป็นไว้ให้ดว้ ย
นอกจากนี้ ADT จะเป็นตัวช่วยในการสร้างหน้าจอ แก้ไขโปรแกรม รวมไปถึงการส่งโปรแกรมออก
เป็นไฟล์นามสกุล .apk เพอ่ื ใชส้ �ำหรับการตดิ ตง้ั แอพพลิเคชนั บนเครอื่ งโทรศพั ท์อีกด้วย
ทัง้ นไี้ ฟลน์ ามสกลุ .apk เปน็ เสมือนไฟล์ทีใ่ ชง้ านจริงทจ่ี ะได้หลงั จาก Compile โปรแกรมท่พี ัฒนาขึน้
ท�ำให้สามารถน�ำไปรันบนระบบ Android ได้ หรืออีกนัยหน่ึงก็เปรียบเทียบได้กับไฟล์นามสกุล .exe ที่ใช้บน
Windows น่ันเอง ซ่งึ การตดิ ตงั้ ADT มขี นั้ ตอนดังต่อไปนี้
1. เปิดโปรแกรม Eclipse
2. คลิกเมนู Help > Install New Software...
2 เลอื ก
บทท่ี 2 การติดต้ังเครื่องมือส�ำหรับการพัฒนาแอพพลิเคชันบน Android 27
3. จะปรากฏไดอะล็อกบ็อกซ์ Install ขน้ึ มา
4. คลกิ ปุม่
คลิก 4
5. จะปรากฏไดอะล็อกบอ็ กซ์ Add Repository ข้นึ มา
6. กรอกช่อื Repository ที่ต้องการ ในท่นี ี้กรอกชอ่ื Android
7. ในส่วนของ Location: ใหผ้ ู้อ่านกรอก https://dl-ssl.google.com/android/eclipse/
8. คลกิ ปุม่
6 กรอกชอ่ื
7 กรอก URL
คลกิ 8
ในกรณที ผ่ี อู้ า่ นไมส่ ามารถตดิ ตงั้ ADT ตามขนั้ ตอนดงั กลา่ วได้ อาจจะมสี าเหตหุ ลายประการ ซง่ึ สว่ นใหญ่
เกิดจากปัญหาของการเชื่อมต่ออินเทอร์เน็ต ดังน้ัน ผู้อ่านสามารถด�ำเนินการติดต้ังได้อีกวิธีหนึ่งคือ ให้
ดาวน์โหลดไฟล์ติดตั้งจากเว็บไซต์ http://developer.android.com/sdk/eclipse-adt.html#installing
ซึ่งมีขั้นตอนการติดต้ังดังน้ี (ADT-16.0.0.zip)
28 Android App Development ฉบับสมบูรณ์
1. ให้คลายไฟล์ (Unzip) ที่ดาวน์โหลดมาได้
2. คลิกปุ่ม
3. จะปรากฏหน้าจอ Browse For Folder ให้ผู้อ่านเลือกไปยังไดเร็คทอรีที่คลายไฟล์ไว้ ในที่นี้คือ C:\
2 คลิก
3.1 เลอื ก
3.2 คลิก
บทท่ี 2 การติดตั้งเครื่องมือส�ำหรับการพัฒนาแอพพลิเคชันบน Android 29
4. ได้ผลลัพธ์ดังน้ี
ผอู้ า่ นจะสงั เกตไดว้ า่ ไดอะลอ็ กบอ็ กซจ์ ะแตกตา่ งทสี่ ว่ นของ Location: เทา่ นน้ั ซง่ึ หมายถงึ แหลง่ ทอ่ี ยู่
ของตัวติดตั้ง ADT เท่าน้ัน
9. รอสักครู่ ระบบจะแสดงรายการให้เลอื กดงั รปู
10. คลิกปุม่ เพ่อื เลอื กตวั เลือกท้งั หมด
11. คลกิ ปุ่ม
คลิก 10
11 คลิก
30 Android App Development ฉบับสมบูรณ์
12. รอสักครู่ ระบบจะแสดงรายละเอียดของโปรแกรมต่างๆ ท่ีจะตดิ ต้ัง ใหค้ ลกิ ปมุ่
12 คลิก
13. ให้คลกิ เลือก I accept the terms of the license agreements
14. คลิกปุ่ม
เลอื ก 13
14 คลกิ
บทท่ี 2 การติดต้ังเคร่ืองมือส�ำหรับการพัฒนาแอพพลิเคชันบน Android 31
15. รอสกั ครู่ ระบบจะตดิ ต้งั โปรแกรม
16. เม่ือติดตั้งเสร็จสมบรู ณ์ ระบบจะแนะน�ำใหร้ ีสตาร์ทโปรแกรม Eclipse ใหม่ ใหค้ ลิกปมุ่
คลกิ 16
Android DDMS (Android Dalvik Debug Monitor Server) เปน็ เครอื่ งมอื สำ� หรบั การตรวจสอบและ
แกจ้ ดุ บกพรอ่ งของโปรแกรมทส่ี รา้ งขน้ึ (Debug) โดยที่ Android DDMS สามารถอา่ นรายละเอยี ดและสถานะ
ตา่ งๆ ของโทรศัพท์จ�ำลองได้ ซงึ่ ถือเปน็ เคร่อื งมือทอี่ ำ� นวยความสะดวกให้กบั นักพัฒนาได้มากเลยทเี ดยี ว
ซง่ึ รายละเอยี ดจะกลา่ วถงึ อกี ครง้ั หนง่ึ ในบทท่ี 14 เทคนคิ ในการแกไ้ ขปญั หาสำ� หรบั การพฒั นาแอพพลเิ คชนั
การปรับแต่งค่า ADT และ Android SDK
หลังจากทผี่ ู้อา่ นตดิ ต้ัง ADT เสร็จสนิ้ แล้ว ข้ันตอนตอ่ ไปคอื การปรบั แต่งคา่ ADT และ Android SDK
เพอื่ ใหส้ ามารถทำ� งานร่วมกนั ได้ ซง่ึ มขี ั้นตอนดงั ต่อไปน้ี
1. เปดิ โปรแกรม Eclipse
2. คลิกเมนู Window > Preferences
2 เลือก
32 Android App Development ฉบับสมบูรณ์
3. จะปรากฏไดอะล็อกบ็อกซ์ Preferences ขน้ึ มา
4. คลิกเลอื ก Android
5. จะสงั เกตไดว้ า่ ทางดา้ นขวามอื จะปรากฏขอ้ ความแสดงคา่ ผดิ พลาด Value must be an existing
directory ในกรณนี ้ใี หค้ ลิกปมุ่
6. จะปรากฏไดอะล็อกบ็อกซ์ Browse For Folder ในข้นั ตอนน้ใี หผ้ ู้อา่ นเลือกไดเร็คทอรีท่ีได้ติดต้งั
Android SDK ไว้ ซึ่งในทนี่ ค้ี อื C:\android-sdk-windows
7. คลกิ ปุม่
4 เลอื ก 5 คลิก
6 เลอื ก
7 คลกิ
8. สังเกตได้วา่ ข้อผดิ พลาดท่ีแสดงขนึ้ มาก็จะหายไป
9. คลิกป่มุ
คลกิ 9 33
บทท่ี 2 การติดตั้งเครื่องมือส�ำหรับการพัฒนาแอพพลิเคชันบน Android
ทง้ั นผี้ อู้ า่ นสามารถเพมิ่ พาธของ android-sdk-windows ในสว่ นของเครอ่ื งมอื ตา่ งๆ ใหส้ ามารถเขา้ ถงึ
โดยง่าย ซึง่ ผอู้ า่ นสามารถท�ำไดด้ ังนี้
1. คลิกปุม่ > Control Panel
2. คลกิ ไอคอน System
2 คลกิ
3. คลิกท่ี Advanced system settings
3 คลิก
34 Android App Development ฉบับสมบูรณ์
4. จะปรากฏไดอะลอ็ กบอ็ กซ์ System Properties ข้นึ มา
5. คลิกแทบ็ Advanced
6. คลกิ ป่มุ
5 คลิก
คลิก 6
7. จะปรากฏไดอะล็อกบ็อกซ์ Environment Variables ขน้ึ มา
8. ในส่วนของ System variables ใหด้ ับเบลิ คลกิ ตัวแปร Path
8 ดบั เบลิ คลกิ
9. จะปรากฏไดอะล็อกบ็อกซ์ Edit System Variable ข้นึ มา
10. กรอกพาธของ tools เพ่มิ เขา้ ไปดังน้ี “;C:\android-sdk-windows\platform-tools\;”
11. คลิกปมุ่
คลิก 11 10 กรอกพาธ
บทท่ี 2 การติดตั้งเครื่องมือส�ำหรับการพัฒนาแอพพลิเคชันบน Android 35
12. คลิกปุ่ม
13. คลกิ ปมุ่
คลิก 12 13 คลกิ
การติดต้ัง SDK Platform
เมอื่ ตดิ ตงั้ และปรบั แตง่ คา่ ตา่ งๆ ระหวา่ ง ADT กบั Android SDK เสรจ็ เรยี บรอ้ ยแลว้ ขนั้ ตอนตอ่ ไปจะ
เป็นการติดตงั้ แพ็คเกจตา่ งๆ เพื่อใช้ส�ำหรบั พฒั นาแอพพลิเคชนั ท้ังนผ้ี ูอ้ า่ นสามารถเลือกไดต้ ามต้องการ แตใ่ น
ทนี่ ้ีผเู้ ขียนจะพฒั นาแอพพลเิ คชันบนพน้ื ฐานของ Android 4.0.3 ซึง่ มีข้ันตอนดังน้ี
1. เปิดโปรแกรม Eclipse
2. คลิกเมนู Window > Android SDK Manager
2 เลอื ก
36 Android App Development ฉบับสมบูรณ์
3. จะปรากฏไดอะลอ็ กบ็อกซ์ Android SDK Manager ข้ึนมา
4. เลอื กรายการแพค็ เกจ Android รนุ่ ตา่ งๆ ซงึ่ ผอู้ า่ นสามารถเลอื กไดต้ ามตอ้ งการ (ในทน่ี เ่ี ลอื กเฉพาะ
Android 4.0.3)
5. หลักจากผูอ้ ่านเลอื กแพ็คเกจตา่ งๆ เรยี บรอ้ ยแลว้ ให้คลกิ ปมุ่
เลือก 4
5 คลกิ
6. จะปรากฏไดอะล็อกบ็อกซ์ Choose Packages to Install เพื่อให้ผู้อ่านยอมรับแพ็คเกจที่จะ
ดำ� เนินการติดตั้ง
7. ให้คลิกเลอื ก Accept All
8. คลิกปุม่
7 เลือก
8 คลิก
บทท่ี 2 การติดต้ังเครื่องมือส�ำหรับการพัฒนาแอพพลิเคชันบน Android 37
9. รอสักครู่ เพ่ือให้ระบบติดตั้งแพ็คเกจต่างๆ ให้เสร็จเรียบร้อย ซ่ึงในข้ันตอนนี้อาจจะใช้เวลานาน
พอสมควร โดยจะขึน้ อยูก่ ับความเรว็ ของการเช่อื มต่ออินเทอร์เนต็ ดังนนั้ ค�ำแนะน�ำก็คอื ใหเ้ ลือก
เฉพาะแพ็คเกจหรือรุน่ ทจ่ี ะใชง้ านสำ� หรบั การพฒั นาจรงิ เทา่ นน้ั
10. เม่อื Install เสร็จเรียบรอ้ ยแลว้ จะปรากฏไดอะลอ็ กบอ็ กซ์ ADB Restart ขนึ้ มา
11. คลกิ ปุ่ม เพื่อรสี ตารท์ ADB
12. ให้คลกิ ปุม่ เพอ่ื ปดิ ไดอะล็อกบอ็ กซ์
11 คลิก
12 คลิก
การสร้างโทรศัพท์จ�ำลอง (Emulator)
เม่ือผู้อ่านได้ติดต้ังเครื่องมือต่างๆ เสร็จสิ้นแล้ว ในหัวข้อนี้คือ การจ�ำลองอุปกรณ์โทรศัพท์เคล่ือนที่
บนระบบ Android ขึน้ มา ซง่ึ จะเรยี กวา่ AVD (Android Virtual Device) จดุ ประสงค์เพื่อนำ� มาใชท้ ดสอบ
การท�ำงานของแอพพลิเคชนั ทพ่ี ฒั นาขึ้นมาน่นั เอง
โดยปกติแล้วแอพพลิเคชันท่ีพัฒนาขึ้นมาและรันบนเคร่ืองโทรศัพท์จ�ำลองน้ี เมื่อน�ำไปติดต้ังบน
โทรศัพทจ์ รงิ กส็ ามารถน�ำไปใช้งานไดจ้ ริงเช่นกนั ซึง่ จะกลา่ วถึงอกี ครั้งในบทสุดท้าย
38 Android App Development ฉบับสมบูรณ์
ในการทดสอบแอพพลิเคชันท่ีผู้อ่านพัฒนาขึ้นมานั้น จะต้องมีการสร้าง AVD ขึ้นมาก่อน แล้วรัน
ให้ AVD ท�ำงานเป็นโทรศัพท์จ�ำลองที่มีสภาพแวดล้อมเหมือนโทรศัพท์จริง ซ่ึงจะเรียกว่า Emulator เพื่อใช้
ทดสอบการทำ� งานของแอพพลิเคชัน ท้ังนี้หลกั การของ Emulator กจ็ ะเหมือนกับการจ�ำลองโทรศพั ท์ท่ีใชร้ ะบบ
ปฏิบตั กิ าร Android จริงๆ ขึ้นมาบนเคร่ืองคอมพิวเตอร์นัน่ เอง โดยท่คี ุณสมบัติต่างๆ ของ Emulator จะมคี วาม
คล้ายคลึงกับโทรศพั ท์ทใ่ี ชจ้ รงิ อยา่ งไรกต็ ามกอ็ าจจะมขี ้อแตกต่างกนั บา้ งตามบรษิ ัทผูจ้ ัดจำ� หน่ายโทรศพั ท์
ขอ้ ดขี องการใชง้ าน Emulator ก็คอื ในกรณีท่ีผ้อู า่ นไม่สามารถซือ้ โทรศัพท์จรงิ ได้ ก็สามารถใช้งาน
ตาม Feature ทร่ี ะบบ Android มีใหไ้ ด้เช่นกนั เชน่ Google Map เปน็ ต้น
ท้ังน้ีข้อดีอีกข้อหนึ่งท่ีส�ำคัญส�ำหรับนักพัฒนาก็คือ ความเร็ว เน่ืองจากในการพัฒนาแอพพลิเคชัน
นั้นอาจจะมีข้อผดิ พลาดต่างๆ มากมาย ดงั นนั้ จึงเป็นการดีกว่าทจี่ ะพฒั นาบน Emulator กอ่ น เพือ่ ทดสอบว่า
แอพพลิเคชันสามารถท�ำงานได้อย่างถูกต้องตามท่ีต้องการหรือไม่ จากน้ันจึงน�ำแอพพลิเคชันท่ีมีการตรวจสอบ
ข้อผิดพลาดแลว้ ไปติดตั้งบนโทรศัพท์จรงิ อีกคร้ังหนึง่ ซึ่งขน้ั ตอนการสร้าง AVD มีดังต่อไปนี้
1. เปดิ โปรแกรม Eclipse
2. คลิกเมนู Window > AVD Manager
2 เลือก
3. จะปรากฏไดอะล็อกบ็อกซ์ Android Virtual Device Manager ขึน้ มา
4. คลกิ ป่มุ เพือ่ สร้าง AVD
4 คลิก
บทท่ี 2 การติดต้ังเคร่ืองมือส�ำหรับการพัฒนาแอพพลิเคชันบน Android 39