สรุปการเปลี่ยนแปลงของ Feature และ API ใน Android 4.4 KitKat (API 19)
บทความนี้เป็นหนึ่งในซีรีย์บันทึกการเปลี่ยนแปลงของฟีเจอร์และ API ในแอนดรอยด์แต่ละเวอร์ชัน สำหรับผู้ที่หลงเข้ามาอ่านคนใดต้องการดูของเวอร์ชันอื่นๆ สามารถกดดูได้จากลิ้งข้างล่างนี้ได้เลย
สารบัญ
- Android 10 (API 29)
- Android 9.0 Pie (API 28)
- Android 8.1 Oreo (API 27)
- Android 8.0 Oreo (API 26)
- Android 7.1 Nougat (API 25)
- Android 7.0 Nougat (API 24)
- Android 6.0 Marshmallow (API 23)
- Android 5.1 Lollipop (API 22)
- Android 5.0 Lollipop (API 21)
- Android 4.4 KitKat (API 19)
Important Behavior Changes
External Storage Permission
ต้องใส่ Permission สำหรับอ่านข้อมูลใน External Storage ที่ใช้คำสั่ง getExternalStoragePublicDirectory()
แต่ยกเว้น Directory ที่เรียกจากคำสั่ง getExternalFilesDir()
WebView
WebView มีการเปลี่ยนแปลงการทำงานเยอะมาก
Alarm Manager
Alarm ที่สร้างขึ้นด้วย AlarmManager ในแบบวิธีก่อนหน้าจะทำงานแบบไม่ตรงเวลาเป๊ะๆ (Inexact) ต้องใช้คำสั่ง setExaxt()
หรือ setWindow()
แทน
Printing Framework
เพิ่ม API สำหรับ Printing Framework ให้ใช้งาน
SMS Provider
ผู้ใช้สามารถกำหนด Default SMS App เองได้ คำสั่งใน SMS Provider บางคำสั่งอนุญาตให้เรียกใช้งานได้จาก Default SMS App เท่านั้น
Wireless and Connectivity
NFC Host Card Emulation
สามารถใช้งาน NFC HCE (Host Card Emulation) บนเครื่องที่รองรับได้
NFC Reader Mode
สามารถกำหนดให้ NFC อ่านเฉพาะข้อมูลที่ต้องการได้
Infrared Support
เพิ่ม ConsumerIrManager API สำหรับอุปกรณ์ที่มี Infrared Transmitter ให้ใช้งาน
Multimedia
Adaptive Video Playback
รองรับ Adaptive Video Playback เพื่อให้สามารถเปลี่ยน Resolution ของ Video ระหว่างเล่นได้
On-demand Audio Timestamps
รองรับ On-demand Audio Timestamps เพื่อให้ภาพและเสียงในวีดีโอ Synchronize กัน
Surface Image Reader
เพิ่ม ImageReader API เพื่อดึงข้อมูลของ Image Buffer ที่ถูก Render อยู่ใน Surface ได้
Peak & RMS Audio Measurements
สามารถดึงค่า Peak และ RMS ของเสียงที่เล่นอยู่ผ่านคลาส Visualizer ได้แล้ว
Loudness Enhancer
เพิ่มคลาส LoudnessEnhancer สำหรับเพิ่มความดังของเสียงให้มากกว่าปกติ
Remote Controllers
Remote Controller รองรับการแสดง Rating ในตัว
Closed Captions
VideoView รองรับ Subtitle ที่เป็นแบบ WebVTT สำหรับการเล่นวีดีโอที่เป็นแบบ HLS
Animation and Graphics
Scenes & Transitions
เพิ่ม Scene & Transition API สำหรับการทำ Animation แบบใหม่
Animator Pausing
Animator สามารถสั่งให้หยุด (Pause) และเล่นต่อ (Resume) จากของเดิมได้แล้ว
Reusable Bitmaps
Mutable Bitmap ที่อยู่ใน BitmapFactory สามารถนำมา Reuse ใหม่ได้ และสามารถกำหนดค่าต่างๆให้กับ Bitmap โดยไม่จำเป็นต้องใช้คำสั่งใน BitmapFactory อีกต่อไป
User Content
Storage Access Framework
เพิ่ม Storage Access Framework เพื่อเป็นตัวกลางในการเข้าถึงไฟล์จากแอปต่างๆ
External Storage Access
สามารถอ่าน/เขียนข้อมูลลง Secondary External Storage (เช่น SD Card) ได้แล้ว โดยใช้คำสั่ง getExternalFilesDirs()
และถ้าเป็น Directory สำหรับ Cache หรือ OBB ก็ให้ใช้คำสั่ง getExternalCacheDirs()
และ getObbDirs()
แทน
Sync Adapter
Sync Adapter สามารถกำหนดค่า requestSync()
ให้รองรับการกำหนดค่าด้วยคลาส SyncRequest
User Input
New Sensor Types
เพิ่มเซ็นเซอร์ Geo-magnetic Rotation Vector ที่ทำงานเหมือนกับ Rotation Vector แต่ใช้ Magnetometer แทน Gyroscope, เพิ่ม Step Detector สำหรับตรวจจับการก้าวเดินของผู้ใช้ และ Step Counter เพื่อนับจำนวนก้าวเดินของผู้ใช้
Batched Sensor Events
สามารถกำหนดให้เซ็นเซอร์ทำการส่งค่ามาเป็นแบบ Batch ได้
Controller Identities
Controller ที่ต่อกับอุปกรณ์จะมี Unique Integer เพื่อให้แยก Controller เมื่อเชื่อมต่อหลายๆตัว และสามารถเช็ค Product ID และ Vendor ID ได้ด้วย
User Interface
Immersive Full-screen Mode
สามารถสั่งให้แอปแสดงเต็มหน้าจอแบบ Immersive Full-screen ได้
Translucent System Bars
System Bar อยู่ข้างบนสามารถกำหนดให้โปรงใสได้
Enhanced Notification Listener
สามารถกำหนด Action เพื่อแสดงใน Notification ได้แล้ว
Drawable Mirroring for RTL Layouts
Drawable Resource สามารถกำหนดให้ Auto Mirror ได้ผ่าน Attribute ที่ชื่อว่า autoMirrored จะได้ไม่ต้องมานั่งทำภาพกลับด้านเองอีกต่อไป
Live Regions for Accessibility
สามารถประกาศ Live Regions ให้กับ View ที่ต้องการได้ เพื่อให้ Screen Reader สามารถอ่านข้อความบน View นั้นๆทันทีเมื่อมีการเปลี่ยนแปลง
สรุป
ก็ต้องยอมรับว่าในแต่ละเวอร์ชันก็มีอะไรเพิ่มเข้ามาเยอะแยะมากมาย เพื่อช่วยให้ผู้ใช้สะดวกสบายและสามารถทำอะไรได้มากขึ้น แต่ในอีกมุมหนึ่ง ก็ส่งผลให้นักพัฒนาต้องหมั่นปรับตัวตามอยู่ตลอดเวลาเพื่อให้แอปของผู้ที่หลงเข้ามาอ่านนั้นยังคงใช้งานได้ปกติสุข