chapter 2
Android Operating System
02
Android Operating System
รู้จักกับแอนดรอยด์
Android 12
สถาปัตยกรรมของระบบปฏิบัติการแอนดรอยด์
ระบบสัมผัสในแอนดรอยด์ (gesture)
ระบบเนวิเกชั่น
รู้จักกับแอนดรอยด์
04
รู้จักกับแอนดรอยด์

บริษัท Android Inc., ก่อตั้งในปี 2003 ที่แคลิฟอเนีย อเมริกา โดย Andy Rubin, Rich Miner, Nick Sears และ Chris White โดยได้พัฒนาซอฟท์แวร์ขึ้นมาภายใต้นิยามที่ว่า “smarter mobile devices that are more aware of its owner's location and preferences”

โดยแรกเริ่มต้องการพัฒนาระบบปฏิบัติการสำหรับกล้องดิจิตอล จากนั้นจึงมองเห็นลู่ทางว่าตลาดของ Smartphone กำลังไปได้ดี จึงได้หันมาทำระบบปฏิบัติการสำหรับมือถือแทน ในขณะนั้น มือถือสมาร์ทโฟนที่ได้รับความนิยมอยู่คือ Blackberry ซึ่งทำงานบนคีย์บอร์ดแบบ QWERTY และไม่มี touchscreen จนกระทั่งปี 2007 Apple ได้ออกผลิตภัณฑ์แบบ touchscreen โดยไม่มีคีย์บอร์ดคือ iPhone

05
รู้จักกับแอนดรอยด์

มือถือรุ่นแรกของแอนดรอยด์ถือกำเนิดในวันที่ 22 ตุลาคม 2008 ในชื่อ HTC Dream

ในปี 2010 Google ได้ออกมือถือเป็นของตัวเองโดยใช้ชื่อว่า Nexus ซึ่งอุปกรณ์ภายใต้ชื่อ Nexus นั้นมีทั้งมือถือและแทบเล็ต โดย Nexus One ยังคงผลิตโดย HTC จากนั้นรุ่นอื่นๆก็ได้ให้ลิขสิทธิ์ในการผลิตไปยังบริษัทอื่นๆด้วย เช่น Nexus 5 ผลิตโดยบริษัท LG

06
รู้จักกับแอนดรอยด์

นับตั้งแต่ปี 2008 Google ได้พัฒนา Android OS ออกมาเรื่อยๆ โดยทำการตั้งชื่อ Android ในแต่ละเวอร์ชั่นตามชื่อขนมในภาษาอังกฤษเรียงตามลำดับ

07
รู้จักกับแอนดรอยด์
คุณสมบัติของแอนดรอยด์ - ทั่วไป

Messaging สามารถส่ง SMS และ MMS ได้

Web browser อุปกรณ์ที่รันบนแอนดรอยด์สามารถใช้งาน web browser ได้

Voice-based features สามารถสั่งงานบางคำสั่งด้วยเสียงได้ นอกจากสั่งงานด้วยเสียงแล้ว ยังนำความสามารถด้าน Voice actions ไปใช้ในงานด้านอื่นๆด้วยเช่น talk back หรือ ให้มือถืออ่านข้อความบางข้อความ Google search เป็นตัวอย่างของ app ที่ใช้ความสามารถของ Voice actions ได้เป็นอย่างดี

Multi-touch ระบบแอนดรอยด์รองรับการสัมผัสพร้อมกันสูงสุด 10 จุด ปัจจุบัน App ต่างๆ กำลังพัฒนาให้ตัวโปรแกรมมีความสามารถทางด้านการใช้ multi-touch มากขึ้น ยกตัวอย่างเช่น การใช้สันฝ่ามือสัมผัสหน้าจอเพื่อเรียกใช้คำสั่ง จับภาพหน้าจอ (screen capture)

Multitasking แอนดรอยด์สามารถรันโปรแกรมหรือ App ได้มากกว่า 1 โปรแกรมในเวลาเดียวกัน เราสามารถเรียกดูว่ามีโปรแกรมใดบ้างที่ทำงานอยู่

Screen capture คือความสามารถในการจับภาพของหน้าจอที่ทำงานอยู่ได้ ปัจจุบันเราสามารถบันทึกภาพการทำงานของหน้าจอให้เป็นวีดีโอได้ด้วย

Video calling ตัวระบบแอนดรอยด์เองยังไม่สนับสนุนการโทรด้วยวีดีโอ แต่ระบบสามารถสนับสนุน App ที่ทำงานด้วยระบบการโทรด้วยวีดีโอได้ เช่น Samsung Galaxy S ที่ใช้ ระบบ UMTS network ในการโทรด้วยวีดีโอ และ Google+ ที่สามารถใช้ App Hangouts ในการโทรด้วยวีดีโอ

Multiple language support

Accessibility ระบบแอนดรอยด์รองรับการทำงานแบบ text-to-speech เพื่อให้ผู้ที่ใช้เสียงไม่ได้สามารถใช้งานระบบได้

08
รู้จักกับแอนดรอยด์
คุณสมบัติของแอนดรอยด์ - การสื่อสาร

Connectivity ระบบแอนดรอยด์สนับสนุนการเชื่อมต่อด้วยระบบต่างๆ เช่น GSM/EDGE, Wi-Fi, Bluetooth, LTE, CDMA, EV-DO, UMTS, NFC, IDEN and WiMAX.

Bluetooth ระบบแอนดรอยด์รองรับการแลกเปลี่ยน contacts ระหว่างมือถือ, การส่งไฟล์, การส่งสัญญาณเสียง (A2DP), การใช้งานคีย์บอร์ดและเม้าส์ ผ่านสัญญาณ bluetooth

Tethering คือความสามารถของระบบแอนดรอยด์ที่รับรองการกระจายสัญญาณ WIFI จากเครื่องหนึ่งไปยังอีกเครื่องหนึ่งได้ หรือที่เรียกว่า WIFI hotspot. ี

09
รู้จักกับแอนดรอยด์
คุณสมบัติของแอนดรอยด์ - มัลติมีเดีย

Streaming media รองรับการ streaming ในระบบ

  • RTP/RTSP เช่น 3GPP PSS, ISMA
  • HTML progressive download (HTML5 video tag)
  • Adobe Flash Streaming (RTMP) and HTTP Dynamic Streaming
  • Apple HTTP Live Streaming
  • Media support ระบบแอนดรอยด์รองรับประเภทของมีเดียไฟล์ดังต่อไปนี้ WebM, H.263, H.264, AAC, HE-AAC, MPEG-4 SP, AMR, AMR-WB (in 3GP container), MP3, MIDI, Ogg Vorbis, FLAC, WAV, JPEG, PNG, GIF, BMP, WebP.

    External storage ระบบแอนดรอยด์รองรับการเก็บข้อมูลด้วย microSD การ์ด โดยปัจจุบันสามารถรองรับความจุของ microSD การ์ดสูงสุดถึง 128 GB โดยระบบแอนดรอยด์สามารถเรียกใช้ไฟล์มัลติมีเดียที่อยู่ใน microSD การ์ดได้

    10
    รู้จักกับแอนดรอยด์
    คุณสมบัติของแอนดรอยด์ - ฮาร์ดแวร์

    ระบบแอนดรอยด์รองรับการทำงานร่วมกับอุปกรณ์เสริมอื่นๆได้ด้วย เช่น

  • still/video cameras
  • Touchscreens
  • GPS
  • Accelerometers
  • Gyroscopes
  • Barometers
  • Magnetometers
  • dedicated gaming controls
  • proximity and pressure sensors
  • Thermometers
  • accelerated 2D
  • accelerated 3D graphics.
  • Android 12
    11
    Android 12
    12
    Android 12
    13
    Android 12
    14
    Android 12
    15
    Android 12
    16
    Android 12
    17
    Android 12
    18
    Android 12
    19
    Android 12
    20
    Android 12
    21
    Android 12
    22
    Android 12
    สถาปัตยกรรมของระบบปฏิบัติการแอนดรอยด์
    24
    สถาปัตยกรรมของระบบปฏิบัติการแอนดรอยด์
    25
    สถาปัตยกรรมของระบบปฏิบัติการแอนดรอยด์
    Linux Kernel

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

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

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

    26
    สถาปัตยกรรมของระบบปฏิบัติการแอนดรอยด์
    Library

    ถัดขึ้นมาจาก 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 ด้วย

    27
    สถาปัตยกรรมของระบบปฏิบัติการแอนดรอยด์
    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 จะไม่มีใน แอนดรอยด์ และบางไลบรารีถึงแม้จะมีในแอนดรอยด์แต่ก็มีรูปแบบการใช้งานที่แตกต่างออกไป

    28
    สถาปัตยกรรมของระบบปฏิบัติการแอนดรอยด์
    Application Framework

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

    Activity Manager  คือคอมโพเนนต์ที่ควบคุม Lifecycle ของแอพพลิเคชั่น

    Content Providers  คือคอมโพเนนต์ที่ทำให้แอพพลิเคชั่นต่างๆ สามารถแชร์ข้อมูลกันได้

    View System  ประกอบด้วยคอมโพเนนต์ที่ใช้สร้างส่วนติดต่อผู้ใช้  เช่น  ปุ่ม เท็กซ์บ็อกซ์ลิสต์ กริด

    Resource Manager  คือตัวจัดการรีซอร์ส  ซึ่งรีซอร์สหมายถึงข้อมูลใดๆ ในแอพพลิเคชั่นที่ไม่ใช่โค้ด  เช่น  ค่าสตริง  และรูปภาพ  เป็นต้น

    Notification Manager คือคอมโพเนนต์ที่ทำให้แอพพลิเคชั่นสามารถแสดงข้อความแจ้งเตือนผู้ใช้ออกมาที่แถบสถานะได้

    29
    สถาปัตยกรรมของระบบปฏิบัติการแอนดรอยด์
    Applications

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

    ระบบสัมผัสในแอนดรอยด์ (gesture)
    31
    ระบบสัมผัสในแอนดรอยด์
    32
    ระบบสัมผัสในแอนดรอยด์
    33
    ระบบสัมผัสในแอนดรอยด์
    34
    ระบบสัมผัสในแอนดรอยด์
    ระบบเนวิเกชั่น
    36
    ระบบเนวิเกชั่น