20 March 2019

[Android Dev Tips] บทย่อของการเปลี่ยนแปลงใน Android แต่ละเวอร์ชัน [Feature & API]



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

        ซึ่งเจ้าของบล็อกก็ได้รวบรวมข้อมูลมาจาก Android Developer นั่นแหละ แต่เอามาสรุปให้ได้อ่านกันง่ายๆว่าในแต่ละเวอร์ชันมีการเพิ่มฟีเจอร์อะไรเข้ามาใหม่บ้าง

สารบัญ

        • Android Q (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 Q (API 29)

System

Autofill improvements

        ปรับปรุงการทำงานของ Autofill Framework เช่น รองรับการซ่อน/แสดงข้อมูลในช่อง Password, สามารถอัพเดท Password ได้แล้ว เป็นต้น

Roles

        เพิ่มรูปแบบการอนุญาตให้แอปเข้าถึงข้อมูลและเรียกใช้งานฟังก์ชันต่างๆของระบบแอนดรอยด์โดยแยกเป็น Role ต่างๆตามที่ระบบของแอนดรอยด์ได้กำหนดไว้

User Interface

Surface control API

        เพิ่ม Surface Control API สำหรับ Surface ที่จำเป็นต้องจัดการกับ Buffer Source และ Metadata สำหรับกำหนดรูปแบบในการแสดง Buffer บน Surface พร้อมๆกัน

WebView hung renderer detection

        เพิ่ม WebView Renderer Client  API สำหรับจัดการกับกรณีที่ Renderer ของ WebView มีปัญหาไม่สามารถทำงานได้

Settings panels

        รองรับการแสดงหน้าต่าง Settings ในรูปแบบของ Panel เพื่อให้ผู้ใช้สามารถตั้งค่าใน Settings ได้โดยไม่จำเป็นต้องสลับแอป โดยสามารถแสดงได้แค่หน้า Internet, NFC และ Volume ของ Settings ได้เท่านั้น

Sharing improvements

        เพิ่ม Sharing Shortcuts API เพื่อมาแทนที่ Direct Share API ซึ่งเปลี่ยนรูปแบบการแชร์ข้อมูลจากแบบ Pull Model มาเป็น Push Model แทน ซึ่งจะช่วยให้ระบบสามารถแชร์ข้อมูลไปยังปลายทางได้ไวขึ้น

Connectivity

Wi-Fi Network Connection API

        รองรับการเชื่อมต่อแบบ Peer-to-peer ซึ่งจะช่วยให้สามารถทำแอปที่ต้องการให้ผู้ใช้เปลี่ยน Wi-Fi Access Point ให้กับอปุกรณ์เชื่อมต่ออยู่ได้ เหมาะสำหรับอุปกรณ์อย่าง Chromecast หรือ Google Home

Wi-Fi Network Suggestion API

        แสดงหน้าต่างเชื่อมต่อ Wi-Fi Access Point โดยกำหนด Wi-Fi ที่ต้องการให้เชื่อมต่อได้ 

Improvements to Wi-Fi High-performance and Low-latency Modes

        สามารถเปิดใช้งาน Low-latency Mode เพื่อให้ใช้งาน Wi-Fi ด้วยประสิทธิภาพที่สูงสุดและมี Latency ต่ำ โดยจะใช้งานได้ก็ต่อเมื่อแอปทำงานอยู่บน Foreground และเปิดหน้าจออยู่ ซึ่งจะมีเหมาะกับแอปที่ต้องการเชื่อมต่อกับ Server ด้วยความ Real-time อย่างเช่นเกม

Specialized Lookups in DNS Resolver

        รองรับ DNS over TLS ในตัว

Wi-Fi Easy Connect

        สามารถส่ง Wi-Fi Credential ให้กับอุปกรณ์อื่นๆผ่าน URI ซึ่งจะอยู้ในรูปแบบของ QR Code, Blutooth LE หรือ NFC

Wi-Fi Direct Connection API

        Wi-Fi Direct สามารถเชื่อมต่อได้เร็วขึ้นโดยใช้ข้อมูลที่กำหนดไว้ล่วงหน้า ซึ่งข้อมูลดังกล่าวจะถูกส่งผ่าน Bluetooth หรือ NFC

Bluetooth LE Connection Oriented Channels (CoC)

        สามารถเชื่อมต่อผ่าน BLE CoC เพื่อส่งข้อมูลขนาดใหญ่ระหว่างอุปกรณ์ที่รองรับ BLE

Telephony

Call Quality Improvements

        สามารถเช็คค่า Quality ของการโทรแบบ IP Multimedia Subsystem (IMS) 

Call Screening and Caller ID

        เนื่องจากระบบของแอนดรอยด์สามารถป้องกันการโทรสแปมได้ ซึ่งการโทรเข้าจะเป็นแบบเสียงเงียบ แต่ข้อมูลการโทรเข้าก็จะยังคงเก็บไว้ใน Call Log ของเครื่องนั้นๆ ซึ่งแอปสามารถดึงข้อมูลการโทรโดยยกเว้นข้อมูลที่เป็นการโทรสแปมได้

Call Redirection Service API

        ยกเลิกการใช้ Broadcast Receiver ที่ชื่อว่า NEW_OUTGOING_CALL เปลี่ยนไปใช้ Call Redirection Service API แทน 

Media and graphics

Native MIDI API

        เพิ่ม Android Native MIDI API เพื่อรองรับ MIDI ผ่าน C/C++

Media Codec Info Improvements

        เพิ่มข้อมูลต่างๆใน Media Codec มากขึ้น

Monochrome Camera support

        รองรับกล้องแบบ Monochrome 

Dynamic Depth Format

        เมื่อถ่ายภาพด้วยกล้องจะสามารถเก็บข้อมูลความลึก (Depth Metadata) ของภาพนั้นๆได้ โดยจะแยกเป็นอีกไฟล์หนึ่ง โดยเป็นข้อมูลแบบ Dynamic Depth Format (DDF) โดยแอปสามารถเลือกได้ว่าต้องการแค่ JPG หรือว่า JPG + Depth เพื่อนำไปทำ Post-processing ตามที่ต้องการได้โดยไม่กระทบกับไฟล์ต้นฉบับ

ANGLE

        รองรับการใช้งาน Almost Native Graphics Layer Engine (ANGLE) เพื่อให้ Native Graphic Engine ทำงานอยู่บน Vulkan 

Security

Improved Biometric Authentication Dialogs

        ปรับปรุงในเรื่องของการใช้ Biometric Authentication ให้สามารถบอกกับระบบของแอนดรอยด์ได้ว่าจะไม่จำเป็นต้องยืนยันตัวตนซ้ำถ้าเคยทำไปเรียบร้อยแล้ว และมี Fallback สำหรับกรณีที่ผู้ใช้ยืนยันตัวตนไม่ผ่าน

Run Embedded DEX Code Directly from APK

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

TLS 1.3 Support

        รองรับ TLS 1.3

Public Conscrypt API

        ในเวอร์ชันก่อนๆ การเรียกใช้ Conscrypt จะต้องทำ Reflection ถึงจะเรียกใช้งานได้ ซึ่งในเวอร์ชันนี้จะเป็น Public API แต่ว่ายังเป็นระดับ Greylist และอาจจะถูกจำกัดการเรียกใช้งานในอนาคต

Accessibility

Accessibility shortcut for physical keyboards

        สามารถเปิด/ปิด Accessibility Shortcut บน Physical Keyboard ด้วยการกดปุ่ม Control + Alt + Z

Soft keyboard controller enhancement

        Accessibility สามารถเรียก Software Keyboard ขึ้นมาได้ถึงแม้ว่าจะมีการเชื่อมต่อ Hardware Keyboard อยู่


Android 9.0 Pie (API 28)

System 

Indoor positioning with Wi-Fi RTT

        เพิ่ม RTT API เพื่อรองรับการทำ Wi-Fi Round-trip-time (RTT) สำหรับการระบุตำแหน่งตัวเครื่องด้วยการใช้ Wi-Fi 

Display Cutout Support

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

Notification Enhancements

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

        มีการปรับปรุงและเพิ่มความสามารถที่เกี่ยวกับ Notification Channels  เช่น เพิ่ม Categoary สำหรับ Priority ใน Do not disturb และเพิ่มรูปแบบการบล็อคการแสดงผลของ Notification ในแบบต่างๆ

Multi-camera Support and Camera Updates

        Camera v2 API รองรับการใช้งานกล้องได้มากกว่า 1 ตัวพร้อมๆกัน สำหรับอุปกรณ์ที่มีกล้องหน้าหรือกล้องหลังมากกว่า 1 ตัว, รองรับภาพถ่ายจากกล้องที่เป็นแบบ Monochrome และรองรับการใช้งาน External ผ่าน USB อย่าง Flashlight และ Camera 

Image Decoder for Drawables and Bitmaps

        เพิ่ม Image Decoder API เพื่อใช้งานแทน Bitmap Factory API โดยมีรูปแบบการใช้งานที่ง่ายกว่าและยืดหยุ่นกว่า และรองรับกับไฟล์ภาพเคลื่อนไหวด้วย

Data Cost Sensitivity in Job Scheduler

        เพิ่มความสามารถใน Job Scheduler เพื่อให้สามารถเช็คข้อมูลต่างๆของอินเตอร์เน็ตมือถือได้ เพื่อให้รองรับกับ Job ที่เกี่ยวข้องการกับใช้งาน อินเตอร์เน็ตมือถือ

Neural Networks API 1.1

        เพิ่ม Element-wise Mathematical Operation กับ Array Operation ใหม่ๆเข้ามา และสามารถกำหนดให้การคำนวณค่าใดๆ ด้วยรูปแบบ IEEE 754 16-bit Floating-point ได้

Autofill Framework Improvements

        ปรับปรุงและเพิ่มคำสั่งสำหรับ Autofill Framework

Android Backup

        รองรับการเข้ารหัสตอน Backup ข้อมูลของแอปด้วยการใช้ PIN, Pattern หรือ Password ตามที่กำหนดไว้ใน Screen Unlock และจะต้องปลดล็อคอีกครั้งเมื่อต้องการ Restore ข้อมูลดังกล่าว

        และสามารถกำหนดข้อมูลในแอปที่ต้องการ Backup ได้ว่าข้อมูลไหนเป็นข้อมูลสำคัญและข้อมูลไหนเป็นข้อมูลทั่วไป

ART ahead-of-time conversion of DEX files

        ART Compiler จะเพิ่มประสิทธิภาพในการบีบอัดไฟล์ DEX โดยทำให้อยู่ในรูปของ Compact DEX ซึ่งจะช่วยให้แอปเริ่มทำงานได้ใจขึ้น ใช้พื้นที่น้อยลง และใช้ Memory น้อยลง ซึ่งจะเห็นผลได้ชัดกับบนอุปกรณ์ที่สเปคต่ำ

User Interface

Animation Image Drawable

        เพิ่มคลาส AnimatedImageDrawable เพื่อรองรับการแสดงไฟล์ภาพเคลื่อนไหว ซึ่งทำงานร่วมกับ Image Decofer API โดยมีรูปแบบการทำงานที่คล้ายกับ AnimatedVectorDrawable และเพิ่ม AAudio API เพื่อรองรับการการเสียงสำหรับแอปที่ใช้ในการสื่อสารที่ต้องการคุณภาพเสียงที่ดีแต่มี Latency ที่เพิ่มความสามารถใน Audio Effect API เพื่อรองรับการทำ Dynamic Processing 

Text

        รองรับการทำ Precomputed Text บน Background Tread, สามารถเรียกแว่นขยายผ่าน Magnifier API เพื่อขยายขนาดข้อความที่แสดงผล, เพิ่มความสามารถใน Text Classifier สำหรับวิเคราะห์ข้อความด้วย Machine Learning เพื่อบอกว่าข้อความดังกล่าวเป็นข้อมูลแบบไหน และเพิ่มคำสั่งต่างๆใน Text View เพื่อให้จัดการกับการจัด Layout ได้ง่ายขึ้น

Media

HDR VP9 Video, HEIF Image Compression and Media APIs

        รองรับการเล่นวีดีโอแบบ High Dynamic Range (HDR) VP9 Profile 2 และการแสดงไฟล์ภาพแบบ High Efficiency Image File (HEIF/HEIC)

Security

Android Protected Confirmation

        เพิ่ม Android Protected Confirmation เพื่อใช้ในการยืนยันกับผู้ใช้ในเวลาที่ทำอะไรบางอย่างที่ต้องการแสดงข้อมูลบางอย่างที่ต้องการความปลอดภัย เช่นการทำ Payment Transaction ต่างๆ

Unified Biometric Authentication Dialog

        เพิ่ม Biometric Prompt API เพื่อเป็นตัวกลางในการเข้าใช้งานการยืนยันตัวตนด้วยข้อมูลทางชีวภาพ เช่น Fingerprint, Retina Scanner หรือเซ็นเซอร์แบบอื่นๆ โดยไม่ต้องเรียกคำสั่งเพื่อใช้งานแยกกัน 

Hardware Security Module

        รองรับการทำงานของ StrongBox Keymaster ที่เป็นชื่อเรียกโมดูลด้านความปลอดภัยที่มี CPU, Storage และความสามารถอื่นๆที่เกี่ยวกับความปลอดภัยในตัวที่สามารถทำงานร่วมกับ Trusted Execution Environment (TEE)  ได้

Secure Key Import Into Keystore

        เพิ่มความปลอดภัยในการถอดรหัสข้อมูลด้วยการเพิ่ม Encrpyted Key ใส่ไว้ใน Keystore ที่เป็นแบบ ASN.1-encoed Key ซึ่งจะช่วยให้ข้อมูลที่อยู่ในนั้นเมื่อถูกโหลดเข้า Memory เครื่องจะแสดงเป็นข้อมูลที่ถูกเข้ารหัสอยู่ และจะมีการใช้ Keybaster เพื่อถอดรหัสในภายหลัง โดยจะรองรับกับเครื่องที่รองรับ Keymaster 4 ขึ้นไป

APK Signature Scheme with Key Rotation

        รองรับ APK Signature Scheme v3 ที่มีการเพิ่ม Proof-of-rotation Record เข้าไปใน Signing Block ในแต่ละ Signing Certificate ซึ่งจะช่วยให้แอปสามารถใช้ Signing Certificate ตัวใหม่ได้ โดยที่ Signing Certificate ตัวนั้นจะต้องมีการเชื่อมกับ Signing Certificate ที่อยู่ใน APK ตัวก่อนหน้า 

Option to Allow Key Decryption Only on Unlocked Devices

        สามารถระบุได้ว่าจะให้ Keystore ทำการถอดรหัสข้อมูลก็ต่อเมื่อทำการปลดล็อคหน้าจอเท่านั้น ซึ่งจะช่วยป้องกันไม่ให้ข้อมูลถูกถอดรหัสเมื่อเครื่องหายหรือถูกขโมย

Legacy Encryption Support

        อุปกรณ์แอนดรอยด์ที่รองรับ Keymaster 4 สามารถใช้ Triple Data Encryption Algorithm (Triple DES) สำหรับระบบที่เป็น Legacy ได้

Deprecation of WPS

        Wi-Fi Protected Setup (WPS) ถูกประกาศ Deprecated ด้วยเหตุผลด้านความปลอดภัย


Android 8.1 Oreo (API 27)

System 

Android Go

        เพิ่ม Platform ที่ชื่อว่า Android Go สำหรับ Entry-level Device ซึ่งจะแตกต่างจาก Android ปกติตรงที่มีการปรับแต่งให้ระบบทำงานบนหน่วยความจำที่ต่ำกว่า 1GB ได้ และ Google Play รองรับการสร้างแอปสำหรับอุปกรณ์ที่มีหน่วยความจำต่ำ (Low RAM)

Neural Networks API

        เพิ่ม Neural Networks API สำหรับการใช้งาน Machine Learning บนอุปกรณ์แอนดรอยด์อย่าง TensorFlow Lite หรือตัวอื่นๆ

Autofill Framework Updates

        เพิ่มคำสั่งต่างๆให้กับ Autofill Framework เช่น การกำหนด Autofille Option ให้กับคลาส BaseAdapter,  Validator สำหรับเลี่ยงการแสดงหน้าต่างบันทึกข้อมูลลง Autofill เพื่อไม่ให้จำข้อมูลที่ไม่ถูกต้อง เป็นต้น

Programmatic Safe Browsing Actions

        สามารถกำหนดการทำงานของ Safe Browsing ใน WebView ผ่านโค้ดได้

Shared Memory API

        เพิ่ม Shared Memory API สำหรับการแชร์หน่วยความจำระหว่าง Process ผ่าน AIDL

User Interface

Improved Notifications

        มีการเปลี่ยนแปลงให้ Notification สามารถเล่นเสียงแต้งเตือนได้ 1 ครั้งต่อ 1 วินาทีเท่านั้น และ NotificationListenerService กับ ConditionProviderService จะไม่ทำงานบนอุปกรณ์แอนดรอยด์ที่มีหน่วยความจำต่ำ (Low RAM)

Edit Text Update

        การใช้คำสั่ง getText() จะได้เป็น Editable แทนที่จะเป็น CharSequence ซึ่งจะส่งผลกับแอนดรอยด์เวอร์ชันก่อนๆด้วย

Wallpapaer Colors API

        สามารถกำหนดข้อมูลเกี่ยวกับสีใน Live Wallpaper ให้กับ System UI ได้

Media

Video Thumbnail Extractor

        สามารถดึงภาพ Thumbnail จากวีดีโอด้วยการระบุช่วงเวลาของวีดีโอผ่านคำสั่งใน MediaMetadataRetriever ได้

Security & Privacy

Fingerprint Updates

        เพิ่ม Error Code สำหรับ Fingerprint Manager API  2 ตัว คือ Lockout Permanent และ Vendor-specific error

Cryptography Updates

        เปลี่ยนแปลงการทำงานและเพิ่ม Algorithm ต่างๆใน Conscrypt API 

Android 8.0 Oreo (API 26)

System 

Custom Data Store

        เพิ่ม PreferenceDataStore เพื่อรองรับการสร้าง Data Preferences ที่มีลักษณะคล้ายกับ Shared Preferences โดยเขียนคำสั่งกำหนดได้เองตามใจชอบว่าจะให้ข้อมูลเก็บไว้ที่ไหน จะเป็น Cloud หรือ Local Database ก็ได้

Background Execution Limits

        จำกัดการทำงานของ Background Service และ Broadcast Receiver ที่ถูกเรียกใช้งานในแอปแต่ละตัว เพื่อลดการใช้ทรัพยากรเครื่องโดยไม่จำเป็น

Background Location Limits

        จำกัดการค้นหาตำแหน่งของตัวเครื่องจากแอปต่างๆตามความเหมาะสมเพื่อลดการการใช้แบตเตอรีเยอะเกินจำเป็น

Job Scheduler Improvements

        ปรับปรุงให้ JobScheduler ทำงานร่วมกับ Background Execution Limits 

Cached Data

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

        สามารถใช้คำสั่งเพื่อกำหนดรูปแบบการลบข้อมูล Cache ได้ด้วย เช่น ถ้าจะต้องลบไฟล์ใน Directory ที่กำหนดไว้ ก็ให้ลบไฟล์ต่างๆทั้งหมดในนั้นด้วยเลย หรือ ไม่ต้องลบไฟล์นั้นทิ้ง แต่ให้เคลียร์ข้อมูลในไฟล์นั้นจนเหลือ 0 Byte แทน และในกรณีที่แอปจำเป็นต้องใช้พื้นที่เพื่อเก็บข้อมูลขนาดใหญ่ก็สามารถใช้คำสั่งเพื่อให้ระบบเคลียร์ข้อมูล Cache จากแอปต่างๆเพื่อให้พื้นที่เพียงพอกับที่กำหนดได้

WebView APIs

        เพิ่ม API ต่างๆสำหรับ WebView โดยประกอบไปด้วย
        • Version API สำหรับเช็คเวอร์ชันของ WebView ในเครื่อง
        • Google Safe Browsing API สำหรับเปิด/ปิดการใช้งาน Google Safe Browsing  บน WebView
        • Termination Handle API สำหรับจัดการกับกรณีที่ Renderer Process ของ WebView ถูกระบบของแอนดรอยด์ทำลายทิ้งเพื่อคืนหน่วยความจำ
        • Renderer Importance API สำหรับกำหนด Priority ให้กับ Renderer Process ของ WebView ซึ่งจะมีผลต่อการถูกระบบของแอนดรอยด์ทำลายทิ้งเพื่อคืนหน่วยความจำ

Content Provider Paging

        Content Provider รองรับการโหลดข้อมูลข้อมูลแบบ Pagination เพื่อให้สามารถโหลดข้อมูลทีละชุดได้ในเวลาที่มีข้อมูลใน Content Provider เป็นจำนวนเยอะมาก

User Interface

Picture-in-Picture mode

        รองรับการแสดงผลแบบ Picture-in-picture Mode ที่เคยใช้งานได้เฉพาะบน Android TV 

        โดยเป็นรูปแบบหนึ่งของ Multi-window Mode ที่สามารถกำหนดให้ Activity ที่แสดงผลอยู่เปลี่ยนไปแสดงเป็นหน้าต่างขนาดเล็กอยู่ที่มุมเครื่องได้ เหมาะกับการแสดงผลจำพวก Video Playback ที่ต้องการแสดงผลต่อเนื่องถึงแม้ว่าผู้ใช้จะสลับไปใช้งานแอปตัวอื่นๆ

Improved Notifications

        เพิ่มความสามารถต่างๆให้กับ Notification เพื่อให้ผู้ใช้สามารถใช้งานได้ง่ายขึ้นและจัดการกับ Notification ได้ง่ายขึ้น 

        โดยสามารถจัดกลุ่มของ Notification เพื่อให้ผู้ใช้กำหนดรูปแบบการแสดงผลของ Notification โดยแยกจาก Notification Group ได้, รองรับการแสดง Notification Badge/Dots , ผู้ใช้สามารถปิดการแสดงผลของ Notification ในแอปที่ต้องการแบบชั่วคราวได้, กำหนดเวลาที่จะแสดง Notification ได้, กำหนดสีพื้นหลังของ Notification ผ่าน API ได้โดยตรง และเพิ่ม MessagingStyle เพื่อกำหนดรูปแบบในการแสดงผลของ Notification ให้รองรับกับการแสดงข้อความสนทนาจากผู้ใช้หลายๆคน

Autofill Framework

        เพิ่มระบบ Autofill เพื่อให้ผู้ใช้สามารถกรอกข้อมูลต่างๆภายในแอปได้ง่ายขึ้น รวมไปถึงรองรับการสร้าง Autofill เพื่อใช้งานเองด้วย

Downloadable Fonts

        รองรับการเพิ่มฟอนต์ลงในแอปที่ให้ผู้ใช้สามารถเลือกที่จะดาวน์โหลดฟอนต์ในภายหลังได้ ไม่ต้องใส่ฟอนต์ไว้ใน APK ตั้งแต่ตอนแรก

Fonts in XML

รองรับการกำหนดฟอนต์ผ่าน Font Resource ซึ่งทำให้กำหนดผ่าน XML ได้เลย ไม่ต้องเขียนโค้ดสั่งให้ยุ่งยากอีกต่อไป

Autosizing TextView

        รองรับการทำ Autosizing บน TextView เพื่อให้สามารถปรับขนาดตามข้อความที่แสดงอยู่บนนั้นได้

Multi-display support

        รองรับการแสดงผลบนหน้าจอแสดงผลหลายๆตัว

Color Management

        รองรับการแสดงผลบนหน้าจอที่รองรับ Wide-gamut Color และรองรับการแสดงภาพที่มี Color Profile เป็นแบบ Wide Color เช่น AdobeRGB, Pro Photo RGB หรือ DCI-P3 เป็นต้น

Adaptive Icons

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

Maximum Screen Aspect Ratio

        เพิ่ม Metadata ใน Android Manifest ที่ชื่อว่า max_aspect เพื่อกำหนด Maximum Aspect Ratio ที่แอปรองรับสำหรับการแสดงผลบนหน้าจอที่มีอัตราส่วนมากกว่า 16:9 (1.777) 

Unified layout margins and padding

        เพิ่ม Attribute ใน Layout XML ของ View เพื่อช่วยให้กำหนดค่า Margin กับ Padding ได้ง่ายมากขึ้น ถ้าต้องการกำหนดค่าให้กับ Top และ Bottom ก็ให้ใช้เป็น Vertical แทน และถ้าเป็น Left และ Right ก็ให้ใช้ Horizontal แทน

Pinning shortcuts and widgets

        เพิ่มคำสั่งสำหรับการเพิ่ม Shortcuts และ Widgets ในหน้า Launcher ด้วยคำสั่งจากโค้ดได้ 

Pointer Capture

        ทำให้ View ที่ต้องการสามารถรับค่าจาก Pointer ของเมาส์ได้โดยตรง โดยตอนที่ Pointer Capture ทำงาน Pointer จะไม่แสดงให้เห็น แต่ View จะสามารถรับค่าต่างๆจากเมาส์ได้ทั้งหมด 

App Category 

        เพิ่ม Attribute ที่ชื่อว่า appCategory ใน <Application /> เพื่อให้กำหนดได้ว่าแอปดังกล่าวอยู่ในหมวดหมู่ไหน เพื่อให้ระบบของแอนดรอยด์แสดงข้อมูลการใช้งานเช่น Data Usage, Battery Usage หรือ Story Usage โดยแยกหมวดหมู่ของแอปตามที่กำหนดไว้

Android TV Launcher

        ปรับเปลี่ยนรูปแบบการแสดงหน้า Launcher ของ Android TV ใหม่ทั้งหมด

Animator Set

        เพิ่มคำสั่งใน AnimatorSet API เพื่อให้กำหนดช่วงเวลาที่ต้องการเริ่มเล่นและสามารถสั่งให้เล่น Animation แบบ Reverse ได้

Keyboard Navigation Clusters

        สามารถกำหนดกลุ่มของ View เพื่อให้สามารถกดปุ่ม Meta + Tab (Meta ขึ้นอยู่กับคีย์บอร์ดที่ใช้ ถ้าเป็นของ Mac OS คือปุ่ม Command ส่วนของ Windows คือปุ่ม Controls และถ้าเป็น Chrome OS จะเป็นปุ่ม Search) แล้วสลับไปโฟกัส View ตัวอื่นๆที่อยู่ใน Cluster กลุ่มเดียวกัน โดย View ที่อยู่ใน ViewGroup ตัวเดียวกันจะถือว่าอยู่ใน Cluster กลุ่มเดียวกันด้วย (ไม่นับ View ที่อยู่ในระดับ Child)

Speech output

        เพิ่มคำสั่งใน Text-to-speech (TTS) เพื่อให้สามารถรู้ได้ว่ากำลังพูดในแต่ละประโยคที่ช่วงเวลาไหนบ้าง

Media

Volume Shaper

        เพิ่ม Volume Shaper API เพื่อให้สามารถทำ Volume Transition ผ่านโค้ดได้ เช่น การทำ Fade-in, Fade-out หรือ Cross Fade เป็นต้น

Audio Focus Enhancements

        เพิ่มคลาส AudioFocusRequest เพื่อใช้กำหนดรูปแบบการทำงานของ Audio Focus ให้กับ Audio Playback ได้

Media Metrics

        เพิ่มคำสั่งสำหรับแสดง Metric Data สำหรับคลาส MediaPlayer, MediaRecorder, MediaCoder และ MediaExtractor ซึ่งจะประกอบไปด้วยข้อมูลต่างๆของ Content ที่กำลังเล่นอยู่

Media Player Improvements

        Media Player API รองรับการเล่นไฟล์ข้อมูลแบบ DRM-protected และ HLS Sample-level Encrypted และเพิ่มคำสั่งสำหรับกำหนดรูปแบบการ Seek ใน Media Player

Media Recorder Improvements

        รองรับการเล่นไฟล์ MPEG2_TS และ MultiMuxer สามารถเพิ่ม Audio และ Video Steam ได้มากกว่า 1 Track แล้ว

Improved Media File Access

        รองรับการสร้าง Documents Providers ขึ้นมาใช้งานเอง และสามารถดึงค่า URI ของ Document ที่ต้องการได้ รวมไปถึงการหา Path ของ Document นั้นๆ

Wireless & Connectivity

Wi-Fi Aware

        รองรับ Wi-Fi Aware ที่เป็นแบบ Neighbor Awareness Networking (NAN) เพื่อค้นหาอุปกรณ์อื่นๆที่อยู่รอบๆด้วย Wi-Fi โดยไม่จำเป็นต้องใช้ Internet Access Point

Bluetooth Updates

        รองรับ AVRCP 1.4, Bluetooth Low Energy 5.0 (BLE) และ LDAC Codec ของ Sony

Companion Device Pairing

        เพิ่ม Companion Device​ API เพื่อควบคุมการเชื่อมต่อ Companion Device ผ่าน Bluetooth, BLE หรือ Wi-Fi 

Sharing

Smart Sharing

        รองรับการกำหนด Topic ของเนื้อหาที่ต้องการแชร์ผ่าน Intent เพื่อให้ระบบของแอนดรอยด์สามารถแสดงรายชื่อแอปได้ตรงกับเนื้อหามากขึ้น

Text Classifier

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

Security & Privacy

New Permissions

        เพิ่ม Permission ตัวใหม่สำหรับการใช้คำสั่งเพื่อรับสายโทรเข้าและขอเข้าถึงข้อมูลเบอร์โทรภายในเครื่อง

New Account Access and Discovery APIs

        เพิ่มคำสั่งใหม่เพื่อใช้ในการกำหนดค่าเกี่ยวกับ Account ภายในเครื่อง

Runtime & Tools

Platform optimizations

        ปรับปรุงประสิทธิภาพในการทำงานของ Runtime ให้ดียิ่งขึ้น ปรับ Garbage Collection ให้ทำงานแบบ Concurrent-compaction ซึ่งจะช่วยให้จัดการกับตำแหน่งของโค้ดและหน่วยความจำได้ดีกว่าเดิม ส่งผลให้ใช้ระยะเวลาในการ Boot น้อยลง และประสิทธิภาพในการทำงานของ OS และแอปดีขึ้น

Updated Java Language Support

        เพิ่ม java.time ของ OpenJDK 8 และ java.nio.file กับ java.lang.invoke ของ OpenJDK 7

Updated ICU4J Android Framework APIs

        อัพเดท ICU Version เป็น 58.2, CLDR Version เป็น 30.0.3 และ Unicode Version เป็น 9.0

Android 7.1 Nougat (API 25)

System

Enhanced Live Wallpaper Metadata

        กำหนด Metadata ให้กับ Live Wallpaper ที่สร้างขึ้นมาได้ เช่น ชื่อ, คำอธิบาย หรือผู้สร้าง รวมไปถึง URL เพื่อแสดงข้อมูลอื่นๆเพิ่มเติม

Storage Manager Intent

        เพิ่ม Action ที่ชื่อว่า ACTION_MANAGE_STORAGE สำหรับ Intent เพื่อเปิดหน้า Free up space ของตัวระบบแอนดรอยด์ สำหรับกรณีที่พื้นที่ในเครื่องไม่พอใช้งานและต้องการให้ผู้ใช้เคลียร์ข้อมูลที่ไม่จำเป็นภายในเครื่อง

Demo User Hint

        สามารถรู้ได้ว่าตอนนี้แอปกำลังทำงานอยู่ใน Demo User หรือไม่ จะได้เพิ่มคำสั่งต่างๆเพื่ออธิบายข้อมูลเพิ่มเติมเกี่ยวกับตัวแอพ

VR

Improved VR Thread Scheduling

        รองรับการกำหนดให้ Thread ตัวหนึ่งในเครื่องทำงานเป็น VR Thread สำหรับ VR Mode โดยระบบจะให้ Thread ดังกล่าวทำงานให้มากขึ้นเพื่อลด Latency ให้มากที่สุด

User Interface

App Shortcuts

        เพิ่ม Shortcut แบบใหม่ที่เรียกว่า App Shortcuts เพื่อให้สามารถใช้งานแอปบางอย่างได้ทันทีเพียงแค่กดค้างที่ไอคอนแอปแล้วเลือกคำสั่งที่ต้องการ

Round Icon Resources

        เพิ่มการแสดงไอคอนแบบวงกลม เพื่อรองรับการแสดงผลไอคอนในบางอุปกรณ์ที่ต้องการแสดงไอคอนแอปในเครื่องเป็นวงกลมทั้งหมด แต่ยังรองรับการแสดงผลไอคอนแบบปกติในบางรุ่น

User Input

Image Keyboard Support

        เพิ่ม Commit Content API เพื่อรองรับการใส่ภาพหรือ Rich Content จากคีย์บอร์ดลงใน Text Input ภายในแอป ซึ่ง API ดังกล่าวจะเป็น Backward Compatible ด้วย โดยอยู่ใน v13 Support Library

New Professional Emoji

        เพิ่มความหลากหลายของ Emoji ให้มากขึ้นในแง่ของเพศและสีผิว 

Wireless & Connectivity

APIs for Carriers and Calling Apps

        มีการเพิ่มคำสั่งใน Telephon API เพื่อรองรับการทำงานสำหรับแอปของผู้ให้บริการเครือข่ายและโทรศัพท์มือถือ ไม่ว่าจะเป็นการโทรแบบ Multi-endpoint, การกำหนดค่าความเป็นส่วนตัวสำหรับ CDMA Voice หรือการกำหนดค่าต่างๆของผู้ให้บริการสำหรับ Video Telephony

Wear

New Screen Densities for Wear Devices

        เพิ่ม Screen Density เพื่อรองรับกับอุปกรณ์ของ Android Wear โดยจะมี 260, 300 และ 340

Android 7.0 Nougat (API 24)

User Interface

Multi-window Support

        รองรับการแสดง 2 แอปพร้อมๆกันด้วยการแบ่งพื้นที่บนหน้าจอ โดย​ Phone และ Tablet จะรองรับการแสดงผลแบบ Splitscreen ส่วน Android TV จะรองรับการแสดงผลแบบ Picture-in-picture

Notification Enhancements

        ปรับรูปแบบการแสดงผลของ Notification ใหม่ โดยสามารถเพิ่มรูปภาพให้กับ Notification นั้นๆ และกำหนดการแสดงผลด้วยคลาส MessagingStyle ได้ 

        เมื่อแสดง Notification หลายๆตัวจากแอปตัวเดียวกันจะปรับให้อยู่ในรูปแบบ Bundled Notifications เพื่อจัดกลุ่ม Notification แต่ละประเภทให้เป็นกลุ่มเดียวกัน โดยยังสามารถดู Notification แต่ละตัวแยกกันได้เหมือนเดิม รวมไปถึง Action ต่างๆด้วย 

        รองรับ Direct Reply เพื่อให้สามารถพิมพ์ข้อความตอบกลับผ่าน Notification ได้ทันทีและเพิ่ม API สำหรับ Custom View ใน Notification เพื่อให้ทำอะไรได้มากขึ้น

Quick Settings Tile API

        เพิ่ม Quick Settings Tile API เพื่อให้สามารถเข้าถึงการทำงานของ Quick Settings ที่อยู่ใน Notification Shade (Status Bar) ได้

Custom Pointer API

        เพิ่ม Custom Pointer API สำหรับกำหนดรูปแบบการแสดง Pointer เวลาควบคุมอุปกรณ์แอนดรอยด์ด้วย Mouse หรือ Touchpad 

Performance

Profile-guided JIT/AOT Compilation

        ปรับการทำงานของ Android Runtime แบบใหม่ ปรับให้ ART ทำงานแบบผสมกันระหว่าง JIT และ AOT ​โดยตอนที่ติดตั้งแอปใหม่ๆแล้วแอปถูกเรียกใช้งานจะทำงานแบบ JIT เพื่อความรวดเร็ว และเมื่อไม่ได้ใช้งานในตอนกลางคืนก็จะทำการ Compile แบบ AOT เฉพาะโค้ดส่วนที่สำคัญเพื่อให้สามารถทำงานได้เร็วขึ้นเมื่อใช้งานในครั้งต่อไป

Quick Path to App Install

        ด้วยการปรับรูปแบบของ Android Runtime ให้มีการทำงานของ JIT ผสมเข้ามาจึงทำให้การติดตั้งแอปขนาดใหญ่ๆหรือการอัปเดตระบบที่เคยใช้เวลานานมากเหลือเพียงแค่ในระดับวินาที และไม่ต้องเจอกับหน้าต่าง Optimizing App หลังจากอัปเดตระบบอีกต่อไป

Sustained Performance API

        เพิ่มการทำงานแบบ Sustained Performance เพื่อบอกให้เครื่องรักษาประสิทธิภาพในการทำงานของแอปที่ต้องการให้คงที่ได้ และระบบจะปิดการทำงานดังกล่าวทันทีเมื่อหน้าต่างแอปนั้นๆหยุดแสดงผล

Frame Metrics API

        เพิ่ม Frame Metrics API เพื่อให้แอปสามารถตรวจสอบประสิทธิภาพในการแสดง UI จากเดิมที่จะต้องทำผ่าน ADB ด้วยคำสั่ง adb shell dumpsys gfxinfo framestats อยู่เสมอ

Battery Life

Doze on the Go

        จากเดิมที่ Doze ใน Android 6.0 จะทำงานก็ต่อเมื่ออุปกรณ์แอนดรอยด์อยู่ในสถานะ Idle เมื่อไม่ได้เคลื่อนไหวใดๆเป็นระยะเวลาหนึ่ง เช่น การวางเครื่องไว้บนโต๊ะหรือพื้น

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

Project Svelte: Background Optimizations 

        มีการปรับปรุงการทำงานที่เกี่ยวกับแอปที่ทำงานอยู่เบื้องหลัง (Background App) เพื่อลดการใช้ทรัพยากรเครื่องให้น้อยลง เช่น สามารถกำหนดให้ JobScheduler สามารถทำงานโดยอิงจากการเปลี่ยนแปลงใน Content Provider ได้ 

        และลบ Implicit Broadcast ที่เกี่ยวกับ Camera และ Connectivity ที่ทำให้เครื่องถูกปลุกให้ทำงานบ่อยๆซึ่งเป็นสาเหตุที่ทำให้เปลือง Memory และแบตเตอรีโดยใช่เหตุ

Surface View

        ปรับปรุงการแสดงผลบน SurfaceView ให้ดีกว่าเดิม ซึ่งจะช่วยลดการใช้ทรัพยากรเครื่องได้มากกว่าการใช้ TextureView 

Wireless & Connectivity

Data Saver

        เพิ่ม Data Saver Mode เพื่อป้องกันการใช้ Cellular Data เกินกำหนด โดยสามารถเช็คข้อมูลต่างๆสำหรับ Data Saver บนเครื่องนั้นๆผ่านคลาส ConnectivityManager

Number Blocking

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

Call Screening

        เพิ่มคลาส CallScreeningService เพื่อแอปที่ถูกกำหนดเป็น Default Phone App สามารถแสดง UI เมื่อมีสายโทรเข้าได้

Graphic

OpenGL ES 3.2

        รองรับ OpenGL ES 3.2

Vulkan API

        รองรับ Vulkan ที่เป็น 3D Render Engine ตัวใหม่ที่มีประสิทธิภาพดีกว่า OpenGL ES 

System

Direct Boot

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

        แต่ด้วยรูปแบบของ File Based Encryption แบบใหม่ใน Android 7.0 ที่จะแยกพื้นที่เก็บข้อมูลภายในเครื่องเป็น 2 ส่วนคือ Credential encrypted storage และ Device encrypted storage

        โดยข้อมูลที่อยู่ใน Credential encrypted storage จะให้เข้าถึงได้ก็ต่อเมื่อปลดล็อคหน้าจอครั้งแรกหลังจากเปิดเครื่อง ส่วน Device encrypted storage จะเข้าถึงได้ทันทีที่เปิดเครื่องเสร็จแล้ว โดยไม่จำเป็นต้องปลดล็อคหน้าจอ ซึ่งการทำงานของระบบในช่วงเวลานี้จะเรียกว่า Direct Boot Mode 

        จึงสามารถกำหนดให้แอปได้ว่าจะให้ทำงานใน Direct Boot Mode หรือไม่ จะได้ไม่ต้องรอจนเครื่องทำการ Boot จนเสร็จ

Multi-local Support & More Languages

        รองรับการกำหนดภาษาในเครื่องแบบ Multi language เพื่อให้เครื่องสามารถกำหนดภาษาที่ต้องการแสดงภายในเครื่องได้มากกว่า 1 ภาษา จึงทำให้ API ที่เกี่ยวกับการตั้งค่าภาษาภายในเครื่องมีการเปลี่ยนใหม่ด้วย

ICU4J APIs in Android

        เพิ่มคำสั่งบางชุดของ ICU4J 

APK Signature Scheme v2

        App-signing Scheme แบบใหม่ที่จะช่วยลดระยะเวลาในการติดตั้งแอปและป้องกันการดัดแปลงแก้ไขไฟล์ APK จากเดิมที่ใช้ JAR Siging

Scoped Directory Access

        เพิ่ม API ใหม่สำหรับการเข้าถึง External Storage รวมไปถึงอุปกรณ์อย่าง SD Card โดยลดขั้นตอนและคำสั่งที่ใช้ในเวอร์ชันเก่าๆให้อยู่ในรูปที่ใช้งานได้ง่ายขึ้น

Keyboard Shortcuts Helper

        รองรับการกดปุ่ม Meta + /​ (ปุ่ม Meta ขึ้นอยู่กับคีย์บอร์ดในแต่ละ OS โดยบน Mac OS คือปุ่ม Command ส่วน Windows คือ Controle และบน Chrome OS คือ Search) เพื่อแสดงหน้า Keyboard Shortcut เพื่อแสดง Shortcut ที่สามารถกดจากแอปหรือระบบของแอนดรอยด์ได้ ซึ่งสามารถกำหนด Shortcut ที่จะแสดงเอง ผ่านคำสั่ง onProvideKeyboardShortcuts() ได้

Virtual Files

        โดยปกติแล้ว การเข้าถึงข้อมูลใน Storage Access Framework ที่ผู้ใช้สามารถเข้าถึง Cloud Storage ต่างๆได้ แต่ทว่าไฟล์ที่อยู่บนพื้นที่เหล่านั้นจะอยู่ในลักษณะของ Input Stream ไม่ใช่ Bytecode โดยตรงจึงไม่สามารถเปิดไฟล์ดังกล่าวได้

        ในเวอร์ชันนี้จึงเพิ่ม Virtual Files เข้ามาไว้ใน Storage Access Framework เพื่อจำลองเป็นไฟล์ดังกล่าวแทน

Android TV Recording

        เพิ่มคำสั่งใน Time-shifting API สำหรับการบันทึก Playback Content บน Android TV 

Accessibility

Vision Settings on the Welcome Screen

        รองรับการปรับขนาดการแสดงผลของ UI และขนาดตัวอักษรได้ รวมไปถึง Touch Gesture สำหรับ Accessibility Mode

Security

Key Attestation

        สามารถสร้าง RSA หรือ EC Key Pair โดยเก็บไว้ใน Hardware-backed Keystore เพื่อป้องกันข้อมูลในแอปที่เป็นความลับ 

Network Security Config

        รองรับการตั้งค่าให้กับ Secure Connection (HTTPS/TLS)  ผ่าน XML แทนที่จะสั่งผ่านโค้ด

Default Trusted Certificate Authority

        แอปที่ทำงานบน Android 7.0 จะถูกตั้งค่าให้อนุญาตใช้ได้แค่ CA ที่มาจากระบบ (System-provided Certificates Authorities) เท่านั้น ถ้าจำเป็นต้องใช้ CA ที่ผู้ใช้เพิ่มเข้ามาเอง (User-added Certificates Authorities) จะต้องเพิ่ม CA ใน Network Security Config ด้วย ถึงจะใช้งานได้

VR

Platform Support and Optimizations for VR Mode

        เพิ่ม VR Mode เพื่อรองรับแอปที่เป็น VR ได้อย่างมีประสิทธิภาพ รวมไปถึงเซ็นเซอร์ต่างๆและ UI ที่รองรับกับการใช้งานใน VR Mode โดยเฉพาะ ซึ่งจะต้องใช้ Google VR SDK ในการพัฒนาเพื่อให้รองรับกับ VR Mode 

Printing Framework

Print Service Enhancements

        รองรับการกำหนดข้อมูลเพิ่มเติมเกี่ยวกับ Printer แต่ละเครื่องและ Print Job

Android 6.0 Marshmallow (API 23)

Security

Fingerprint Authentication

        รองรับการใช้งาน Fingerprint Scanner ผ่าน FingerprintManager API

Confirm Credential

        สามารถเรียกหน้า Authentication โดยอิงจากรูปแบบที่ผู้ใช้ใช้งานในหน้า Screen Unlock และสามารถกำหนดระยะเวลาในการ Re-authentication

System

App Linking

        ระบบ Intent แบบใหม่บนแอนดรอยด์ที่จะรู้ได้ทันทีว่า Web Domain นั้นเป็นของแอปไหน เพื่อที่เวลาเปิด URL ของ Domain นั้นๆแล้วเด้งไปเปิดแอปได้ทันที

Adoptable Storage Devices

        สามารถเปลี่ยน SD Card ให้ทำงานเป็นเหมือน Internal Storage จึงสามารถติดตั้งแอปลงใน SD Card ได้โดยตรง ทำให้คำสั่งสำหรับ Internal Storage มีการอัปเดตใหม่ เพราะว่าสามารถมี Internal Storage ได้มากกว่า 1 ตัว รวมไปถึงกำหนดใน Android Manifest ได้ว่าจะให้ติดตั้งแอปลงใน SD Card เมื่อเป็น Internal Storage หรือไม่

Multimedia

4K Display Mode

        รองรับการแสดงผลที่ความละเอียด 4K บนอุปกรณ์ที่รองรับ โดยที่ UI จะแสดงอยู่บนความละเอียดเดิม (มักจะกำหนดไว้ที่ 1080p) แต่ว่า SurfaceView จะถูกแสดงผลอยู่บนความละเอียดสูงสุด (แสดงผลเป็น 4K)

Support for MIDI

        รองรับ MIDI Protocol ผ่าน MIDI API เพื่อรับส่งข้อมูลแบบ MIDI ผ่านทาง USB หรือ Bluetooth LE 

Create Digital Audio Capture and Playback Objects

        รองรับการบันทึกเสียงที่สามารถกำหนด Source และ Sink ของเสียงในเครื่องได้

APIs to Associate Audio and Input Devices

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

List of All Audio Devices

        สามารถดึงข้อมูลของเครื่องเสียงที่เชื่อมต่ออยู่ ผ่าน AudioManager API

Flashlight API

        สามารถสั่ง Camera Flash ในเครื่องให้เปิดค้างไว้เป็น Torch Mode ได้

Reprocessing Camera2 API

        Camera2 API รองรับ YUV และ Private Opaque เพื่อทำ Image Reprocessing ใน Camera Capture Session ได้

Updated ImageWriter Objects and Image Reader Class

        เพิ่ม ImageWriter API เพื่อใช้ในการสร้างข้อมูลภาพเพื่อเพิ่มลงไปใน Surface ที่จะถูก Component อื่นๆไปเรียกใช้งานอีกที (เช่น Surface ที่อยู่ใน SurfaceView ที่ถูกเรียกใช้งานจาก Camera2 API)

User Input

Voice Interactions

        เพิ่ม Voice Interaction API สำหรับเรียกใช้งาน Voice Actions เพื่อให้แอปรองรับการสั่งงานแอปด้วยเสียงได้

Assist API

        สามารถส่งข้อมูลจากแอปไปให้ Google Assistant ได้ และสามารถจำกัดข้อมูลในแอปที่ไม่ต้องการให้ Google Assistant เข้าถึงได้

Bluetooth Stylus Support

        สามารถรองรับการใช้งาน Bluetooth Stylus กับแอปได้ผ่านคลาส View, GestureDetector และ MotionEvent 

User Interface

Themeable ColorStateLists

        สามารถใช้ ColorStateList กับ Theme Attribute ได้แล้ว และ getColorStateList() กับ getColor() ในคลาส Resources ถูกประกาศ Deprecated เพื่อให้เปลี่ยนไปใช้จากคลาส Context แทน

Wireless & Connectivity

Hotspot 2.0

        รองรับการใช้งาน Hotspot 2.0 โดยสามารถเรียกใช้งานได้ผ่านคลาส WifiEnterpriseConfig 

Improved Bluetooth Low Energy Scanning

        เพิ่มคำสั่ง setCallbackType() เพื่อให้ระบบแจ้งเตือนเมื่อเจออุปกรณ์ที่เป็น Bluetooth LE

Android 5.1 Lollipop (API 22)

Wireless & Connectivity

Multiple SIM Card Support

        รองรับการเข้าใช้งาน SIM Card ในเครื่องที่รองรับมากกว่า 1 SIM ผ่าน SubscriptionManager API

API Change

Deprecated HTTP Classes

        คลาสที่อยู่ใน org.apache.http และ android.net.http.AndroidHttpClient จะถูกประกาศเป็น Deprecated โดยแนะนำให้เปลี่ยนไปใช้คลาส URLConnection แทน


Android 5.0 Lollipop (API 21)

User Interface

Material Design Support

        เพิ่ม Style Resource ใหม่สำหรับ Material Design

Concurrent Documents and Activities in the Recents Screen

        จากเดิมที่ Recents Screen จะแสดงแค่ 1 Task ต่อ 1 แอปเท่านั้น ในตอนนี้สามารถแสดงได้มากกว่า 1 Task ต่อ 1 แอปได้แล้ว เพื่อให้ผู้ใช้สามารถใช้งานแอปตัวเดียวกันแบบ Multitasking ได้ง่ายขึ้น

WebView Updates

        WebView บนเวอร์ชันนั้นจะเป็น Chromium M37 ที่สามารถอัปเดตเป็นเวอร์ชันใหม่ล่าสุดจาก Google Play ได้แล้ว

Screen Capturing and Sharing

        เพิ่ม Projection API เพื่อรองรับการบันทึกภาพหน้าจอและสามารถแชร์ภาพบนหน้าจอไปที่อื่นตามที่ต้องการได้

Notifications

Lock Screen Notifications

        ผู้ใช้สามารถกำหนดได้ว่าจะให้ Notification ที่แสดงในหน้าจอ Lock Screen แสดงผลแบบไหน โดยแบ่งเป็น Private, Public และ Secret

Notifications Metadata

        สามารถกำหนด Category, Priority และบุคคลที่เกี่ยวข้องกับ Notification นั้นๆได้ เพื่อให้ระบบสามารถเรียงลำดับการแสดงผลของ Notification ได้

Graphics

Support for OpenGL ES 3.1

        รองรับ OpenGL ES 3.1 แล้ว

Android Extension Pack

        สามารถเพิ่มความสามารถเสริมให้กับ OpenGL ES 3.1 ตามที่ต้องการ

Media

Camera API for Advanced Camera Capabilities

        เพิ่ม Camera2 API เพื่อรองรับการเรียกใช้งานกล้องที่ละเอียดมากขึ้น ทำอะไรได้เยอะขึ้น

Media Playback Control

        Notification รองรับการแสดงข้อมูลเกี่ยวกับ Media Playback บน Remote Controller ได้แล้ว

Media browsing

        สามารถค้นหา Media Content ในแอปต่างๆผ่าน Browse API ได้แล้ว

Storage

Directory Selection

        Storage Access Framework สามารถกำหนดให้ผู้ใช้สามารถเลือก Directory ที่ต้องการได้โดยให้แอปสามารถอ่าน/เขียนไฟล์ทั้งหมดที่อยู่ในนั้นได้โดยไม่ต้องรอให้ผู้ใช้ยืนยันการเข้าถึงในแต่ละไฟล์

        และเพิ่ม Directory ใหม่สำหรับเก็บไฟล์ Media ไว้ใน External Storage โดยเรียกผ่านคำสั่ง getExternalMediaDirs() โดยจะคล้ายกับ getExternalFilesDir() ที่ไม่ต้องประกาศ Permission ถ้าเป็น Directory ของแอปนั้นๆ

Wireless & Connectivity

Multiple Network Connections

        เพิ่ม Multi-networking API เพื่อให้สามารถสแกนหา Network แบบ Dynamic

Bluetooth Low Energy

        สามารถใช้งานเครื่องเป็น Bluetooth LE Peripheral ได้แล้ว จากเดิมที่ทำได้แค่เชื่อมต่อกับอุปกรณ์​ Bluetooth LE เท่านั้น ทำให้สามารถพัฒนาแอปให้เครื่องทำหน้าที่เป็นอุปกรณ์​ Bluetooth LE แล้วเชื่อมต่อกับอุปกรณ์อื่นๆเพื่อส่งข้อมูลให้

NFC Enhancements

        เพิ่มเมนู Android Beam ตอนแสดงเมนูให้เลือกแอปเพื่อแชร์ข้อมูล และสามารถสั่งให้ Android Beam เริ่มทำงานผ่านคำสั่ง invokeBeam ได้เลย

Project Volta

Scheduling jobs

        เพิ่ม JobScheduler API สำหรับกำหนด Background Task ที่ต้องการให้ทำงานตามเงื่อนไขที่กำหนดในรูปแบบของ Job แทน AlarmManager ของเดิม

Printing Framework

Render PDF as bitmap

        รองรับการ Render ไฟล์ PDF ให้กลายเป็นภาพ Bitmap ได้แล้ว โดยใช้ PdfRenderer 

System

App Usage Statistics

        สามารถเข้าถึงประวัติการใช้งานแอปของเครื่องนั้นๆได้ผ่าน Usage API

Testing & Accessibility

Testing and Accessibility Improvements

        สามารถใช้คำสั่งเพื่อดึงข้อมูลจากภาพที่ดึงมาจาก Window Animation และใช้คำสั่ง Shell Command ใน Instrumentation Test ได้ รวมไปถึงกำหนด Voice Profile เวลาที่ใช้งาน Text-to-speech ได้

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

สรุป

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

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