บทความนี้เป็นหนึ่งในซีรีย์บันทึกการเปลี่ยนแปลงของฟีเจอร์และ API ในแอนดรอยด์แต่ละเวอร์ชัน สำหรับผู้ที่หลงเข้ามาอ่านคนใดต้องการดูของเวอร์ชันอื่นๆ สามารถกดดูได้จากลิ้งข้างล่างนี้ได้เลย

สารบัญ

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 นั้นๆทันทีเมื่อมีการเปลี่ยนแปลง

สรุป

ก็ต้องยอมรับว่าในแต่ละเวอร์ชันก็มีอะไรเพิ่มเข้ามาเยอะแยะมากมาย เพื่อช่วยให้ผู้ใช้สะดวกสบายและสามารถทำอะไรได้มากขึ้น แต่ในอีกมุมหนึ่ง ก็ส่งผลให้นักพัฒนาต้องหมั่นปรับตัวตามอยู่ตลอดเวลาเพื่อให้แอปของผู้ที่หลงเข้ามาอ่านนั้นยังคงใช้งานได้ปกติสุข