
โครงสร้าง และพื้นฐาน android application
การเขียน android application มีองค์ประกอบเบื้องต้นไม่มาก เรามีหน้าที่ ที่ต้องจำองค์ประกอบต่างๆ และหน้าที่ของมันให้ได้ ซึ่งไม่ยากครับ บทความเดียวก็จบได้ แต่ทั้งนี้ ทั้งหมดที่จะเล่า จะบอกเพื่อให้เป็นพื้นฐานเท่านั้น เพราะว่าการ program ขั้นสูง มันก็จะมีอะไรเพิ่มมาอีกเรื่อยๆครับ (ผมก็ยังเริ่มต้นเหมือนกันแหล่ะ อิๆ)
โครงสร้างไฟล์ Android Application Devloper
เป็นโครงสร้างของไฟล์ ที่ developer จะมองเห็นเท่านั้น เพราะว่า user เวลาติดตั้ง applicationd ก็จะเห็นแค่ .apk เพียงไฟล์เดียวเท่านั้น สำหรับโครงสร้างไฟล์ที่กล่าวถึงนี้ เราแทบไม่ต้องสร้างอะไรเองเลย เพราะว่าหากเราใช้ Eclipse เวลาที่เราสร้าง project ใหม่นั้น eclipse ก็จะสร้างโครงสร้างไฟล์เหล่านี้ มาให้กับเราโดยอัตโนมัติเลย โดยโครงสร้างไฟล์ และหน้าที่ มีดังนี้
- /src/PACKAGENAME/ACTIVITY.java - เป็นไฟล์ที่เราจะต้อง program ลงไป เพื่อให้เริ่มต้นทำงาน โดย PACKAGENAME ก็คือชื่อ package ที่เราสร้าง และ ACTIVITY คือชื่อ class ที่เราจะระบุในตอนที่สร้าง (ซึ่งมันจะ match ในที่ในไฟล์ AndroidManifest.xml)
- /assets - เอาไว้เก็บไฟล์ multimedia หรือ อื่นๆ เช่น ภาพ เพลง ฯลฯ
- /res/drawable - เก็บภาพ , icon
- /res/layout - เอาไว้เก็บ XML ไฟล์ที่บ่งบอกการแสดงผล ถ้าเปรียบกับการทำเว็บ ก็คือเอาไว้เก็บ HTML โค้ด ที่ไม่มีส่วนเกี่ยวกับ program เลย เอาไว้จัด layout อย่างเดียว
- /res/value - เอาไว้เก็บค่าต่างๆที่เราประกาศขึ้นมา ซึ่งประกอบด้วยดังนี้
- /res/value/arrays.xml - เป็นการประกาศค่า array
- /res/value/colors.xml - เป็นการประกาศค่าสี
- /res/value/dimens.xml - เป็นการประกาศขนาดวัตถุต่างๆ
- /res/value/strings.xml - เป็นการประกาศข้อความ หรือตัวหนังสือ (ซึ่งเราจะเอามาประยุกค์การทำหลายภาษาได้อีก)
- /res/value/styles.xml - เป็นการประกาศ object style
- /gen/PACKAGENAME - เราจะพบ R.java ซึ่งจะเป็นการกำหนดค่าของ object ต่างๆ โดยเราไม่ควรแก้ไขไฟล์นี้ เพราะว่า Eclipse จะทำการ compile ไฟล์นี้ใหม่ทุกครั้งที่มีการแก้ไขอยู่แล้ว
โดยไฟล์ที่สำคัญ ที่เราจะต้องพิจาณาเป็น พิเศษก็คือ ACTIVITY.java (ACTIVITY คือชื่อที่ตั้งขึ้นมา) เพราะว่ามันจะเก็บ program และการทำงานเริ่มต้นเอาไว้ ดังนั้น มือใหม่ ได้แก้ไขไฟล์นี้ตลอดเวลาอย่างแน่นอน และอีกไฟล์ที่ทำงานคู่กันก็คือ /res/layout/XXX.xml (XXX คือชื่อที่ตั้ง เพื่อทำงานคู่กับ java ของเรา) โดยสองไฟล์นี้ ทำงานร่วมกันในแบบที่ XXX.xml เป็นตัวจัดส่วนแสดงผล ว่าจะให้ปุุ่มๆนี้ แสดงตรงนี้ text box แสดงตรงนี้ แล้ว .java ก็ทำหน้าที่เอา content มาใส่เข้าไป ตามที่ xml ระบุ โดย content อาจจะได้มาจากการคำนวนของโปรแกรม ,database, strings.xml ก็ได้ ขึ้นอยู่กับการเขียน java เพื่อส่งค่าให้ไปแสดงผลนั่นเอง
สำหรับอีกไฟล์ที่น่าสนใจก็คือ AndroidManifest.xml เพราะว่าไฟล์นี้ เปรียบเสมือน configuration ของ application ของเราก็ว่าได้ โดยจะเก็บค่าที่บ่งบอก คุณลักษณะของ application เราเอาไว้ทั้งหมด ตั้งแต่ version ที่อนุญาตให้ใช้งาน ไปจนถึง การขอ permission ว่าจะมีอะไรบ้าง
ประเภทของ android application developer
ประเภทที่ว่านี้ ไม่ได้แยกเป็น app กับ เกมส์ เหมือนอย่างที่ user เห็นนะครับ อันนี้แบ่งตามการdev และการทำงานของ application นั้นๆ
- Activity - แบบนี้เป็นแบบเรียบง่าย ที่สุด และเราเห็นบ่อยที่สุด คือโปรแกรมที่มีหน้าจอแสดงผล เพื่อให้ user เห็นนั่นล่ะ ไม่ว่าจะเป็น เกมส์ , application ที่มีการตอบสนองต่อผู้ใช้ โดย activity นี้ จะทำงานเฉพาะเมื่อมีการตอบสนองจากผู้ใช้เท่านั้น หากเราออก ก็จะหยุดทันที ลองนึกถึง mp3 player ที่เราเขียน activity ให้ผู้ใช้ เลือกเพลงฟัง แต่เมื่อผู้ใช้กด home เพื่อซ่อนโปรแกรม mp3 player จะหยุดทำงานทันที ดังนั้น mp3 player จึงมีทั้ง activity และ service ประกอบกัน(หัวข้อถัดไป)
- Service - คือการทำงานแบบที่ไม่มีหน้าตา และไม่ต้องการ การโต้ตอบกับผู้ใช้ เช่น service การนับจำนวน download ข้อมูลผ่าน WIFI ระบบสามารถทำงานได้ โดยไม่ต้องมีหน้าจออะไรแสดงเลย (แต่คนเขียนโปรแกรม ก็ต้องสร้าง activity เพื่อดึงreportมาแสดงที่หน้าจอ ไม่งั้นก็ไม่รู้จะเก็บทำไม) และอีกตัวอย่าง คือ mp3 player เวลาที่ user กดย่อ ก็ควรจะยังฟังเพลงได้ จึงต้องมารันเป็น service ต่อหลังจากที่ activity ถูกปิดไป
- Broadcast receivers - จะเป็นลักษณะเหมือนการแจ้ง state ส่วนต่างๆของเครื่องออกมา (ส่งค่าออกมาเฉยๆ ใครอยากรับก็รับไป แต่ไม่ส่งให้ user โดยตรง จะส่งให้กับ application กันเอง) เช่น batter low แล้ว และจะมีตัวมารับ เพื่อเอาไปแสดงผลต่อ เช่น แสดงเสียง หรือ led กระพริบ ก็ว่าไป
- Content providers - เป็นเหมือนสะพานการเชื่อมรับส่งข้อมูลเนื้อหากัน เพื่อใช้ในการ อ่าน หรือ เก็บเข้าส่วนที่จัดเก็บต่อไป
ทักษะขั้นพื้นฐาน Android Application Developer
- java syntax - เพราะว่า android ในโครงสร้างภาษา java ในการพัฒนา application เลยครับ แต่ว่าไม่ใช่ java แบบปกติที่เค้าใช้กัน เพราะว่า android ทำตัว vitual machine ขึ้นมาเอง (ชื่อว่า Dalvik) แต่ java ปกติจะใช้ JVM นั้นเลยทำให้ต่างกัน โดยจะต่างกันในพวก library , โครงสร้าง , การทำงาน แต่ตัว syntax นั้นเหมือนกัน ข้อนี้หลายคนอาจจะเป็นกังวล ว่าถ้าไม่มีพื้นฐาน java เลยจะเขียนได้มั้ย คำตอบอยู่ในข้อถัดๆไปนะครับ เพราะว่าผมคือคนนึง ที่ยอมรับเลย ว่าไม่เคยเรียน java , OOP หรืออะไรที่เกี่ยวข้องเลย
- Logic programming - จริงๆ มันก็มีอยู่ใน programmer ทั่วไปแหล่ะครับ เช่นว่า ถ้าเราจะเช็ค ค่า ว่ามากกว่าหรือน้อยกว่า ต้องใช้คำสั่งอะไรในการเช็ค หรือถ้าจะวน loop จะต้องเขียนอย่างไร ซึ่งตรงนี้ จะผสมกับ java syntax ด้วย เพราะหากได้แต่ logic แต่ไม่รู้คำสั่งก็คงลำบาก(เหมือนผมอีก)
- รักการอ่าน และ ค้นคว้า - งง มั้ย แต่เป็นเพราะว่า android ยังถือว่าเป็นเรื่องที่ใหม่อยู่ ดังนั้น องค์ความรู้ ตัวอย่าง ตัวช่วย จะมีไม่มากเหมือนอย่าง PHP (คนละเรื่องเลยล่ะ) และที่สำคัญ ปัจจุบันมีแต่ภาษาอังกฤษเป็นหลักๆ ดังนั้น หากในรักจริง คงไปลำบากครับ
- ต้องมีความอดทนสูง - เนื่องจาก ตัวอย่างปัญหาที่เกิดอาจจะยังไม่ครบทุกรูปแบบ และเวลาเจอปัญหาก็ไม่รู้จะหันไปถามใคร แล้วอย่างยิ่งคนไทยที่คุยภาษาเดียวกัน ผมว่ามีไม่ถึง 100 คนครับ ที่พัฒนา android application แล้วประเด็นคือ เรารู้จักกี่คนที่อยู่ในนั้น? แล้วจะถามเข้าได้ทุกครั้งหรือเปล่า? ดังนั้น หลายปัญหา เจอแล้วต้องแก้เอง (ด้วยยังไงก็ไม่รู้ล่ะ) ซึ่งมันต้องใช้เวลามาก และก็จะเกิดความกดดันตัวเอง ถ้าแก้ไปเรื่อยๆ ยังไม่ออก สุดท้าย ก็หมดความอดทน แล้วก็เลิก
- ทำ ทำ ทำ แล้วก็ทำ - ทำเยอะๆครับ ขอให้เริ่มจากสิ่งง่ายๆไปก่อน ทำไปเถอะ เยอะๆ ทำมันเข้าไป แล้วก็ค่อยๆขยับไปยากขึ้นๆเรื่อยๆ แล้วเราก็จะเก่ง โดยที่เราไม่รู้ตัวเลยครับ
รหัส version ของ Android
สำหรับ developer ด้วยกัน เวลาพัฒนา android หากมีการอ้างอิงถึงเลข version เค้าจะไม่ใช้ 1.5 1.6 2.0 2.2 หรือ eclair, froyo , ginger bread กัน แต่เค้าจะใช้เลข 1-8 เท่านั้นครับ เรียกว่า API Level โดยมีการอ้างอิงตัวเลขดังนี้
- คือ Android 1.0
- คือ Android 1.1
- คือ Android 1.5
- คือ Android 1.6
- คือ Android 2.0
- คือ Android 2.0.1
- คือ Android 2.1
- คือ Android 2.2
ซึ่ง ณ วันที่เขียนบทความนี้ ยังไม่มี version ที่ 9 นะครับ ดังนั้น API Level 8 หรือที่เรารู้จักโดยทั่วไปว่า Android 2.2 (Froyo) จึงใหม่ล่าสุดครับ
และจากข้อมูล วันที่ 1 ธันวาคม 2553 ปรากฏจำนวนผู้ใช้งาน version ต่างๆดังนี้ครับ
Platform | API Level | Distribution |
---|---|---|
Android 1.5 | 3 | 6.3% |
Android 1.6 | 4 | 10.6% |
Android 2.1 | 7 | 39.6% |
Android 2.2 | 8 | 43.4% |
แปลว่า ถ้าเราเขียน App ให้ใช้งานได้ตั้งแต่ version 1.5 หรือสูงกว่านั้น ก็จะเข้าถึงผู้ใช้ 99.9% ครับ หรือเอาแค่ 1.6 ขึ้นมาก็ได้ถึง 93.6% แล้วทั้งนี้ ต้องพิจารณาถึงความสามารถของโปรแกรมเองครับ เพราะว่าถ้ายิ่งมีความสามารถมาก ก็จะยิ่งต้องอาศัย API Level สูงขึ้นตามมา
หนทางข้างหน้ายังมีอีกยาวไกล android พึ่งเกิดมาได้ไม่กี่ปี พร้อมกับอนาคตที่สดใส ถ้าเราไม่เริ่มตอนนี้อาจจะช้าไม่ทันการได้นะครับ แต่ทั้งนี้ก็ขึ้นอยู่กับตัวคุณเอง ว่ามองอย่างไร เพราะเมื่อเดือนก่อน ผมยังมองว่า ไม่เห็นจำเป็นต้องเขียนอยู่เลย แต่วันนี้ แค่เปลี่ยนความคิด ชีวิตก็เปลี่ยนครับ
ส่วนตัวผมเอง ตอนนี้อาจจะต้องพัก android ไว้ก่อน พอดีมีงานใหญ่หลายงานต้องเคลียร์ แต่ปักธงเอาไว้ว่าช่วงครึ่งปีหลัง 2554 จะลองกลับมาลุยอีกตั้งครับ