22 February 2020

สรุปการเปลี่ยนแปลงของ Feature และ API ใน Android 4.4 KitKat (API 19)

Created on Saturday, February 22, 2020


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

สารบัญ

        • Android 11 (API 30)
        • 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)

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

สรุป

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