วันจันทร์ที่ 18 มีนาคม พ.ศ. 2556

ติดตั้ง Eclipse

          ต่อไปให้ติดตั้งโปรแกรม Eclipse ซึ่งเป็น IDE ( Intergrated Development Environment ) หรือพูดง่ายๆ ก็คือ เอดิเตอร์ ( Editor ) ที่ใช้ในการเขียนโค้ด  ความจริงคุณอาจใช้ Editor ตัวอื่น หรือแม้แต่โปรแกรมแก้ไขข้อความอย่าง Notepad ก็ได้ แต่การใช้ Eclipse จะสะดวกกว่ามาก



          ให้ไปดาวน์โหลดที่ http://www.eclipse.org/downloads/ แล้วเลือกดาวน์โหลด Eclipse IDE for Java Developers 32bit ดังรูป  ( ถ้าใครใช้ 64bit ก็ให้ดาวน์โหลดแบบ 64 bit นะครับ ) แล้วคุณจะได้ไฟล์ .zip มา การติดตั้ง Eclipse จะทำได้โดยแตกไฟล์ .zip นี้ไปยังโฟลเดอร์ที่ต้องการ

          แตกไฟล์ .zip ไปที่ C:\eclipse (ให้สร้างโฟลเดอร์ขึ้นมา ) ซึ่งไฟล์ต่างๆ ของโปรแกรม Eclipse จะถูกรวบรวมไว้ภายในโฟลเดอร์

          ในส่วนของการรันโปรแกรม Eclipse นั้นจะต้องดับเบิลคลิกที่ไฟล์ eclipse.exe ดังนั้นเพื่อความสะดวกให้คุณสร้างชอร์ตคัทของไฟล์นี้ไว้บนเดสก์ท็อปหรือในเมนูปุ่ม start หรือหากคุณใช้ windows 7 ก็อาจคลิ๊กขวาที่ไฟล์ eclipse.exe แล้วเลือก Pin to Taskbar เพื่อสร้างชอร์ตคัทไว้บนทาสก์บาร์เลยก็ได้ครับ

ติดตั้ง JDK

          เนื่องจากการพัฒนาแอพแอนดรอยด์ต้องใช้ภาษาจาวา  คุณจึงต้องติดตั้ง JDK ( Java Development Kit ) เพื่อให้เครื่องของคุณมีคอมไพเลอร์ ( Compiler ) สำหรับคอมไพล์โค้ดจาวาไปเป็นแอพที่รันได้บนอุปกรณ์แอนดรอยด์


          ดาวน์โหลด JDK โดยไปที่ http://www.oracle.com/technetwork/java/javase/downloads/index.html ขอย้ำว่าคุณจะต้องดาวน์โหลด JDK ไม่ใช่ JRE ( Java Runtime Environment ) เนื่องจาก JRE เป็นเพียงสภาพแวดล้อมที่ใช้รันจาวาแอพพลิเคชั่น แต่จะไม่มีคอมไพเลอร์ของภาษาจาวามาให้ และ JRE จะเป็นส่วนหนึ่งของ JDK อยู่แล้ว อธิบายง่ายๆ คือ ดาวน์โหลด JDK ก็จะได้ JRE มาด้วยในตัว ครับ

          ดับเบิลคลิกไฟล์ที่ดาวน์โหลดมาเพื่อติดตั้ง JDK ลงในเครื่องของคุณ ในที่นี้จะติดตั้ง JDK ไว้ที่โฟลเดอร์ C:\Program Files\Java\ ตามค่าดีฟอลต์ที่ตัวติดตั้งระบุมาให้

วันอาทิตย์ที่ 17 มีนาคม พ.ศ. 2556

การเตรียมระบบที่ใช้พัฒนา


          การติดตั้งโปรแกรมต่าง ๆ เพื่อเตรียมเครื่องคอมพิวเตอร์ของคุณให้พร้อมสำหรับการพัฒนาแอพพลิเคชั่นบนแอนดรอยด์

          การพัฒนาแอนดรอยด์แอพพลิเคชั่น ( Android Application ) หรือที่ต่อไปจะขอเรียกว่า "แอพ แอดรอยด์ " นั้นสามารถทำได้บนเครื่องคอมพิวเตอร์ที่ติดตั้งระบบปฎิบัติการต่าง ๆดังนี้
  • Windows XP (32bit) , Windows 7 (32 or 64 bit)
  • Mac OS X 10.5.8 ขึ้นไป
  • Linux ที่มี GNU C Library ( glibc ) 2.7 ขึ้นไป และสำหรับ Ubuntu Linux ให้ได้เวอร์ชั่น 8.04 ขึ้นไป
          เมื่อมีเครื่องคอมพิวเตอร์ที่รันระบบปฎิบัติการตัวใดตัวหนึ่งข้างต้นแล้ว  ต่อไปคุณจะต้องติดตั้ง JDK,Eclipse,Android SDK และ ADT Plug-in  ติดตามได้ในบทความต่อไปครับ


สถาปัตยกรรมของแอนดรอยด์

          ตอนนี้คุณทราบแล้วว่าแอนดรอยด์คืออะไร  และทำอะไรได้บ้าง  ต่อไปเราจะมาดูกันว่าการทำงานของมันประกอบไปด้วยอะไรบ้าง รูปภาพต่อไปนี้แสดงส่วนประกอบหลัก ๆ ของระบบปฎิบัติการแอนดรอยด์  โดยส่วนประกอบในแต่ละชั้นจะเรียกใช้บริการของชั้นที่อยู่ถัดลงไป

 ภาพประกอบถ่ายจากหนังสือครับ

Linux Kernel

          ส่วนที่เป็นแกนหลักหรือเคอร์เนล ( Kernel ) ของแอนดรอยด์นั้น ความจริงก็คือเคอร์เนลของลินุกซ์ ซึ่งเป็นระบบปฎิบัติการที่สร้างโดย Linus Torvalds ในปี ค.ศ. 1991 ปัจจุบันเราสามารถพบลินุกซ์ได้ในทุกสิ่งทุกอย่าง  ตั้งแต่นาฬิกาข้อมือไปจนถึง Super Computer

          ส่วนของ Linux Kernel  นี้จะทำหน้าทีเป็น Hardware Abstraction Layer กล่าวคือเป็นตัวกลางระหว่าง Hardware และ Software ที่อยู่ถัดขึ้นไป  และทำหน้าที่บริหารจัดการทรัพยากรต่าง ๆ ของเครื่อง  เช่น การจัดการหน่วยความจำ  การจัดการโพรเซส ฯลฯ ผู้ผลิตอุปกรณ์สามารถ "พอร์ต" แอนดรอยด์ให้ไปรันบนฮาร์ดแวร์แบบต่างๆ ได้โดยเปลี่ยนแปลงในส่วนของ Linux Kernel 

          ผู้ใช้มือถือหรืออุปกรณ์แอนดรอยด์จะไม่เห็นว่ามีลินุกซ์อยู่ในเครื่อง  และแอพพลิเคชั่นที่เราพัฒนาก็จะไม่ได้เรียกไปยังลินุกซ์โดยตรง  แต่ในฐานะนักพัฒนาเราจำเป็นต้องรับรู้ว่ามีลินุกซอยู่  เนื่องจากโปรแกรม utility บางตัวที่ Android SDK เตรียมมาให้จะติดต่อกับลินุกซ์ในอุปกรณ์แอนดรอยด์  เช่น โปรแกรม adb ที่ช่วยให้เราเรียกใช้คำสั่งเพื่อสำรวจระบบไฟล์ของเครื่อง  ดูโพรเซสที่รันอยู่ในขณะนั้นและอื่น ๆ ได้

Native Libraries

          ถัดขึ้นมาจาก Linux Kernel ก็คือส่วนที่เป็นไลบรารีของแอนดรอยด์  ซึ่งทั้งหมดเขียนด้วยภาษา C หรือ C++ และถูกคอมไพล์มาสำหรับฮาร์ดแวร์ของอุปกรณ์แต่ละรุ่น  ไลบรารีที่น่าสนใจมีดังนี้
  • Surface Manager คือไลบรารีจัดการส่วนแสดงผลที่มีความสามารถในการผสมกราฟิก ทั้ง 2 มิติและ 3 มิติจากแอพพลิเคชั่นต่าง ๆ เข้าด้วยกัน ทำให้สามารถสร้างเอฟเฟ็ค  เช่น วินโดว์ที่มองทะลุไปข้างหลังได้ และ Transition ในรูปแบบต่าง ๆ
  • Media Libraries คือไลบรารีที่จัดเตรียมบริการในการเล่นและบันทึกเสียง วิดีโอ และรูปภาพในฟอร์แมตต่าง ๆ เช่น MPEG4 , H.264,MP3,AAC,AMR,JPG และ PNG
  • SQLite คือ Database Engine ที่มีประสิทธิภาพและมีขนาดเล็ก  เพื่อให้เราจัดเก็บข้อมูลของแอพพลิเคชั่นไว้ในรูปแบบของฐานข้อมูลเชิงสัมพันธ์ ( Relational Database )
  • WebKit  คือไลบรารีที่ใช้แสดงเนื้อหาเว็บเพจ  ซึ่งเป็นตัวเดียวกับที่ใช้ใน Google Chrome และ Apple Safari รวมถึงเว็บราวเซอร์ในมือถือ iPhone และมือถือตระกูล S60 ของ Nokia ด้วย
Android Runtime

          อีกส่วนหนึ่งที่ทำงานอยู่บนเคอร์เนลของลินุกซ์ก็คือ Android Runtime ซึ่งประกอบด้วย Core Library สำหรับภาษาจาวา และ Dalvik Virtual Machine ซึ่งถ้าอธิบายง่ายๆ ก็คือ Java Virtual Machine ในแบบของแอนดรอยด์เอง  ซึ่งถูกออกแบบมาสำหรับอุปกณ์ที่ใช้ไฟฟ้าจากแบตเตอรี่และมีหน่วยความจำจำกัด

          ในแอนดรอยด์นั้นแต่ละแอพพลิเคชั่นจะรันอยู่ในโพรเซสของตัวเอง  และมี Dalvik VM ของตัวเองอยู่ด้วย  ดังนั้นโค้ดของแต่ละแอพพลิเคชั่นจึงรันอยู่ใน VM ที่แยกจากกัน

          สำหรับ Core Library ซึ่งเป็น Java Library นั้นส่วนใหญ่จะเหมือนกับใน Java Standard Edition ( Java SE ) ที่เราใช้พัฒนาจาวาแอพพลิเคชั่นบน PC แต่บางไลบรารีที่มีใน Java SE จะไม่มีในแอนดรอยด์  และบางไลบรารีถึงแม้จะมีในแอนดรอยด์แต่ก็มีรูปแบบการใช้งานที่แตกต่างออกไป

Application Framework

          ถัดขึ้นมาจาก Native Libraries และ Android Runtime ก็เป็นส่วนของเฟรมเวิร์คที่ใช้พัฒนาแอพพลิเคชั่น ( Application Framework ) ซึ่งประกอบด้วยคอมโพเนนต์พื้นฐานต่าง ๆ ที่ใช้ในการสร้างแอพพลิเคชั่นของเรา คอมโพเนนต์เหล่านี้จะติดตั้งมากับแอนดรอยด์อยุ่แล้ว  และเราสามารถแทนที่ด้วยคอมโพเนนต์ที่เราสร้างขึ้นเองได้

          ส่วนสำคัญใน Application Framework มีดังนี้
  • Activity Manager คือคอมโพเนนต์ที่ควบคุม Lifecycle ของแอพพลิเคชั่น
  • Content Providers คือคอมโพเนนต์ที่ทำให้แอพพลิเคชั่นต่างๆ สามารถแชร์ข้อมูลกันได้
  • View System ประกอบด้วยคอมโพเนนต์ที่ใช้สร้างส่วนติดต่อผู้ใช้  เช่น  ปุ่ม เท็กซ์บ็อกซ์ลิสต์ กริด
  • Resource Manager คือตัวจัดการรีซอร์ส  ซึ่งรีซอร์สหมายถึงข้อมูลใดๆ ในแอพพลิเคชั่นที่ไม่ใช่โค้ด  เช่น  ค่าสตริง  และรูปภาพ  เป็นต้น
  • Notification Manager คือคอมโพเนนต์ที่ทำให้แอพพลิเคชั่นสามารถแสดงข้อความแจ้งเตือนผู้ใช้ออกมาที่แถบสถานะได้ 
Applications

          ส่วนบนสุดของสถาปัตยกรรมแอนดรอยด์  ก็คือแอพพลิเคชั่นต่างๆ ทั้งที่ติดตั้งมากับเครื่องอยู่แล้ว ( Core Application ) เช่น Phone dialer,Email,Contacts,Web browser และ Google Play เป็นต้น  รวมถึงแอพพลิเคชั่นที่เราสร้างขึ้นด้วย  ซึ่งแอพพลิเคชั่นทั้งหมดในส่วนนี้จะเขียนด้วยภาษาจาวา







คุณสมบัติและความสามารถของแอนดรอยด์

คุณสมบัติและความสามารถของแอนดรอยด์


          คุณมสมบัติและความสามารถหลักๆ ของแอนดรอยด์ มีดังนี้
  • การเชื่อมต่อ  เทคโนโลยีการเชื่อมต่อที่แอนดรอยด์สนับสนุนประกอบด้วย GSM / EDGE ,          IDEN , CDMA , EV-DO , UMTS , Bluetooth , Wi-Fi , LTE ,NFC และ WiMax
  • Messaging  สนับสนุน SMS,MMS,Threaded Text Messaging และ Cloud To Device Messaging Framework (C2DM)
  • การจัดเก็บข้อมูล แอนดรอยด์มี SQLite ซึ่งเป็นฐานข้อมูลเชิงสัมพันธ์ขนาดเล็ก ( lightweight ) ที่มีประสิทธิภาพสูง สำหรับใช้จัดเก็บข้อมูล
  • Web Browser แอนดรอยด์ติดตั้งมาพร้อมกับโปรแกรมเว็บบราวเซอร์ที่พัฒนาบนเอ็ฯจิ้น WebKit และใช้จาวาสคริปต์เอ็นจิ้น V8 ของเว็บบราวเซอร์ Google Chrome
  • Media  สนับสนุนเสียง วีดิโอ และรูปภาพในฟอร์แมตยอดนิยมต่าง ๆ เช่น MPEG4 , H.264,MP3,AAC,AMR,JPG และ PNG
  • Streaming สนับสนุน RTP/RTSP streaming และ HTML Progressive download ( Tag <video> ของ HTML 5 )
  • สนับสนุนจาวา การพัฒนาแอพพลิเคชั่นบนแอนดรอยด์จะใช้ภาษาจาวา  โดยโค้ดจาวาที่คอมไพล์แล้วจะไม่ได้รันใน Java Virtual Machine ( JVM ) เหมือนจาวาแอพพลลิเคชั่นทั่วไปแต่จะรันใน Dalvik Virtual Machine ซึ่งเป็น VM ที่กูเกิลพัฒนาขึ้นสำหรับอุปกรณ์พกพาโดยเฉพาะ
  • Multi-touch รอบรับการใช้นิ้วมือแตะหน้าจอเพื่อสั่งงานได้มากกว่า 1 จุดพร้อมกัน
  • Multi-tasking คือความสามารถในการรันหลายแอพพลิเคชั่นพร้อมกัน
  • Tethering  คือความสามารถในการแชร์อินเทอร์เน็ตผ่านมือถือหรืออุปกรณ์แอนดรอยด์
  • สนับสนุนฮาร์ดแวร์เสริมอื่นๆ เช่น กล้องถ่ายรูป , GPS,Accelerometer และเทอร์โมมิเตอร์ เป็นต้น


วันเสาร์ที่ 16 มีนาคม พ.ศ. 2556

แอนดรอยด์คืออะไร ?



          แอนดรอยด์ ( Android ) คือระบบปฎิบัติการสำหรับอุปกรณ์พกพา เช่น โทรศัพท์มือถือ และคอมพิวเตอร์แบบแท็บเล็ต ( Tablet Computer หรือ Tablet PC ) เป็นต้น ซึ่งพัฒนามาจากระบบปฎิบัติการลินุกซ์ ( Linux ) อีกทีหนึ่ง
   
          แรกเริ่มนั้นแอนดรอยด์ถูพัฒนาโดยบริษัท Android Inc. ซึ่งก่อตั้งในปี ค.ศ. 2003 โดย Andy Rubin และ Rich Miner ต่อมาในปี ค.ศ. 2005 กูเกิลได้เข้าซื้อบริษัทดังกล่าว  หลังจากนั้นกูเกิลได้ร่วมมือกับกลุ่มบริษัททางด้านฮาร์ดแวร์ ซอฟต์แวร์ และการสื่อสารเช่น Intel , HTC , LG , Texas Instruments เพื่อจัดตั้งองค์กรความร่วมมือที่มีชื่อว่า Open Handset Alliance ขึ้นในปี ค.ศ. 2007 โดยมีจุดประสงค์ในการสร้างแพลตฟอร์ม ( Platform ) สำหรับอุปกรณ์พกพาที่มีพื้นฐานอยู่บนมาตรฐานเปิด ( Open Standard ) ซึ่งโปรเจ็คแรกที่กลุ่ม Open Handset Alliance เปิดตัวออกมาก็คือแอนดรอยด์นี่เองในชื่อโปรเจ็คว่า The Android Open Source Project

          แอนดรอยด์ไม่ใช่สมบัติของบริษัทใดบริษัทหนึ่ง ( Non-Proprietary ) บริษัทผู้ผลิตมือถือหรืออุปกรณ์ที่นำแอนดรอยด์ไปใช้งานจึงไม่มีค่าใช้จ่ายด้านลิขสิทธิ์ นอกจากนี้การที่แอนดรอย์เป็นแพลตฟอร์มโอเพ่นซอร์ส ( Open Source ) ก็ทำให้ผู้ผลิตสามารถปรับแต่งแอนดรอยด์ให้เหมาะกับฮาร์ดแวร์ของตนเองได้

          สำหรับนักพัฒนาทั่วไปจะสามารถพัฒนาแอพพลิเคชั่นที่ัรันบนแอนดรอยด์ได้โดยใช้ภาษาจาวาโดยการเข้าถึงความสามารถต่างๆ ของแอนดรอยด์จะกระทำผ่าน Java Library ที่กูเกิลได้จัดเตรียมไว้ให้ใน Android SDK หรือก็คือชุดพัฒนาซอฟต์แวร์สำหรับแอนดรอยด์นั่นเอง ซึ่งสามารถดาวน์โหลดได้ฟรี