ชุมชน

Now in Android #121

ใช้เวลาอ่าน 9 นาที
ดูโปรไฟล์ของ Daniel Galpin
Daniel Galpin ผู้ประสานงานนักพัฒนาซอฟต์แวร์

ยินดีต้อนรับสู่ Now in Android คู่มือที่อัปเดตอย่างต่อเนื่องเกี่ยวกับสิ่งใหม่ๆ และน่าสนใจในโลกของการพัฒนา Android

อ่านต่อเพื่อดูข้อมูลเกี่ยวกับ Android 16 QPR2 เบต้า 1, ฟีเจอร์ที่เพิ่มเข้ามาใน Android Studio Narwhal, Jetpack Compose 1.9, Media 3 1.8, การเปลี่ยนรูปร่างและการป้อนข้อความอัตโนมัติใน Compose และอื่นๆ อีกมากมาย

คุณดูสรุปวิดีโอได้โดยทำดังนี้

 

 

นอกจากนี้ เรายังมีพอดแคสต์ด้วย

แต่โพสต์นี้มีข้อมูลที่เจาะลึกที่สุด ดังนั้นโปรดอ่านต่อ

Android 16 QPR2 Beta 1 พร้อมให้บริการแล้ว ✨

Android 16 QPR2 เวอร์ชันเบต้าแรกเผยแพร่แล้ว ซึ่งเป็น Android รุ่นแรกที่มาพร้อม SDK เวอร์ชันย่อยของ Android SDK เวอร์ชันย่อยอาจมี API ใหม่ที่ขยายฟีเจอร์ของแพลตฟอร์ม แต่ไม่สามารถทำให้เกิดการเปลี่ยนแปลงลักษณะการทำงานที่กำหนดโดย targetSdkVersion ซึ่งช่วยลดปริมาณการทดสอบแอปกับ SDK เวอร์ชันย่อย

sdk-release-graph.webp

คุณเรียกใช้ API ใหม่ได้โดยตรวจสอบ SDK_INT_FULL กับการแจงนับ VERSION_CODES_FULL ดังนี้

if (Build.VERSION.SDK_INT_FULL >= Build.VERSION_CODES_FULL.BAKLAVA_1) {
  // Call new APIs from the Android 16 QPR2 release
}

ใช้ VERSION_CODES_FULL ในแอตทริบิวต์ไฟล์ Manifest uses-sdk ไม่ได้

ข้อมูลอัปเดตที่สำคัญบางส่วนจาก QPR2 Beta 1 มีดังนี้

UI, ประสบการณ์การใช้งานระบบ และการช่วยเหลือพิเศษ:

  • ตัวเลือกธีมมืดแบบขยายจะกลับสีแอปที่มีธีมสว่างอย่างชาญฉลาดสำหรับผู้ใช้ที่ต้องการรูปลักษณ์แบบมืด
  • ระบบจะสร้างไอคอนแอปตามธีมอัตโนมัติได้หากแอปของคุณไม่มีเลเยอร์ขาวดำ
  • เซสชันตัวเลือกแบบอินเทอร์แอกทีฟจะทำให้ UI ของแอปทำงานอยู่เสมอขณะที่ชีตการแชร์เปิดอยู่ โดยใช้ ChooserManager และ ChooserSession
  • Data Transfer API ใหม่ช่วยให้การย้ายข้อมูลระหว่าง Android และ iOS มีความน่าเชื่อถือและปลอดภัยมากขึ้น โดยต้องอัปเดต XML ของกฎการดึงข้อมูลของแอปและการติดตั้งใช้งาน BackupAgent
  • แพ็กเกจ android.graphics.pdf ได้ขยายเพื่อรองรับการใส่คำอธิบายประกอบและการแก้ไขเอกสาร PDF ผ่าน PdfRenderer.Page
  • ตอนนี้ค่า ViewConfiguration ได้รับการปรับให้เหมาะกับอุปกรณ์เสมือนจริงแต่ละเครื่องแล้ว โปรดย้ายข้อมูลไปยัง ViewConfiguration.get(context) สำหรับสถานการณ์การแสดงผลหลายจอ
  • คุณจะควบคุมการตอบสนองแบบรู้สึกได้ได้ละเอียดยิ่งขึ้นโดยระบุ VibrationAttributes ด้วย View.performHapticFeedback(HapticFeedbackRequest)
  • ตอนนี้คุณสามารถกำหนดการ์ดการตั้งค่าด่วนให้กับหมวดหมู่ที่กำหนดไว้ล่วงหน้าในไฟล์ AndroidManifest.xml ได้แล้ว

สื่อและเสียง:

  • การถอดรหัสซอฟต์แวร์สำหรับ Immersive Audio Model and Formats (IAMF) ซึ่งเป็นรูปแบบเสียงรอบทิศทางแบบเปิด
  • การแชร์เสียงส่วนตัวสำหรับอุปกรณ์เสียง Bluetooth LE Audio ผสานรวมเข้ากับตัวสลับเอาต์พุตของระบบโดยตรง
  • ผู้ใช้สามารถควบคุมความสว่างของ HDR ได้โดยใช้แถบเลื่อนความสว่าง HDR/SDR
  • ส่วนเสริมเครื่องมือเลือกรูปภาพสามารถไฮไลต์อัลบั้มหรือคำค้นหาที่เฉพาะเจาะจงได้

การเชื่อมต่อ:

  • การเพิ่มประสิทธิภาพ Companion Device Management (CDM) ช่วยให้คุณระบุไอคอนอุปกรณ์ที่กำหนดเอง, ฟัง Callback ของ EVENT_ASSOCIATION_REMOVED และเปิดใช้การยืนยันข้ามแอปโดยใช้ DeviceId ได้
  • การอัปเดตบลูทูธรวมถึงการรองรับการสแกนแบบพาสซีฟสำหรับ BluetoothLeScanner (ScanSettings.SCAN_TYPE_PASSIVE), สาเหตุที่การเชื่อมต่อขาดหาย (BluetoothDevice.EXTRA_BOND_LOSS_REASON) และการดึงข้อมูล UUID ของบริการโดยตรง (BluetoothDevice.EXTRA_UUID_LE)
  • การอัปเดตการกำหนดระยะ Wi-Fi RTT (RttStationRangingParams) รองรับการกำหนดระยะเทียบกับสถานี
  • PhoneNumberManager ใหม่พร้อมให้ใช้งานสำหรับการแยกวิเคราะห์และตรวจสอบหมายเลขโทรศัพท์จากส่วนหัว IMS P-Associated-URI
  • การปรับปรุงความเป็นส่วนตัวของเครือข่าย MediaRouter ช่วยให้แคสต์ผ่านสื่อใหม่ๆ เช่น บลูทูธและ UWB ได้ คุณควรใช้ตัวสลับเอาต์พุตของระบบหรือขอสิทธิ์ NEARBY_DEVICES สำหรับเครื่องมือเลือกในแอปที่กำหนดเอง

ความเป็นส่วนตัวและความปลอดภัย

  • สถานะความปลอดภัยระดับระบบแบบใหม่ที่เรียกว่า "ล็อกอุปกรณ์อย่างปลอดภัย" จะล็อกอุปกรณ์และกำหนดให้ต้องมีการตรวจสอบสิทธิ์หลักเพื่อปลดล็อก
  • เพิ่มปุ่มสลับที่แสดงต่อผู้ใช้สำหรับการป้องกันการขโมยโทรศัพท์เพื่อเปิด/ปิดใช้ "การล็อกเมื่อตรวจสอบสิทธิ์ไม่สำเร็จ"

ประสิทธิภาพการทำงานของนักพัฒนาซอฟต์แวร์:

  • API ใหม่ของ AppWidgetManager ช่วยให้คุณค้นหาเมตริกการมีส่วนร่วมกับวิดเจ็ตได้
  • ตอนนี้แอปที่แก้ไขข้อบกพร่องได้ซึ่งติดตั้งผ่าน ADB จะได้รับคำเตือนล่วงหน้าเกี่ยวกับความเข้ากันได้กับหน้าหน่วยความจำขนาด 16 KB
  • ProfilingManager เพิ่มการรองรับทริกเกอร์การทำโปรไฟล์ใหม่ที่ระบบเริ่มต้นและ requestRunningSystemTrace เพื่อบันทึกการติดตามเบื้องหลัง
  • ปุ่มเปิด/ปิด "การบันทึกการพิมพ์แบบละเอียด" ในตัวเลือกสำหรับนักพัฒนาแอปจะให้ข้อมูลการแก้ไขข้อบกพร่องเพิ่มเติมสำหรับ Android Print Framework
  • การทดสอบที่มีประสิทธิภาพมากขึ้นสำหรับประสบการณ์การใช้งานเดสก์ท็อปและจอแสดงผลหลายจอจะเปิดใช้ด้วย API UiAutomation ใหม่สำหรับภาพหน้าจอในจอแสดงผลที่ไม่ใช่ค่าเริ่มต้นและ AccessibilityWindowInfo.refresh สาธารณะ
  • เพิ่มการรองรับ API สำหรับไลบรารี androidx.core:core-backported-fixes ใหม่
  • ตอนนี้เทอร์มินัล Linux รองรับแอป GUI แล้ว
  • WindowInspector.addGlobalWindowViewsListener รองรับการแจ้งเตือนการเปลี่ยนแปลงมุมมองรูทแบบเรียลไทม์

คุณสามารถลงทะเบียนอุปกรณ์ Pixel ที่รองรับเพื่อรับการอัปเดตเวอร์ชันเบต้าแบบผ่านอากาศ (OTA) หรือใช้อิมเมจระบบ 64 บิตกับโปรแกรมจำลองของ Android ใน Android Studio ความเสถียรของแพลตฟอร์มมีเป้าหมายเป็นเดือนตุลาคม 2025

ฟีเจอร์ใหม่จาก Android Studio Narwhal มีความเสถียรแล้ว เริ่มใช้โหมด Agent เลย 🐳

narwhal.webp

ตอนนี้ฟีเจอร์ใหม่จาก Android Studio Narwhal มีความเสถียรแล้ว โดยฟีเจอร์ใหม่และการเพิ่มประสิทธิภาพมีดังนี้

  • Gemini ใน Android Studio: โหมด Agent พร้อมใช้งานสำหรับงานเขียนโค้ดแบบหลายขั้นตอน
  • กฎ ของคลังพรอมต์จะปรับแต่งเอาต์พุต AI ของ Gemini ให้เหมาะกับความต้องการของโปรเจ็กต์
  • เปลี่ยนรูปแบบ UI ด้วย Gemini ใช้ UI ภาษาธรรมชาติเพื่อปรับแต่ง Compose UI ซ้ำๆ
  • การรองรับการพัฒนาที่สมจริงด้วยโปรแกรมจำลองของ Android สำหรับ XR ที่ฝังอยู่, เทมเพลต XR ใหม่ และเครื่องมือตรวจสอบเลย์เอาต์ที่ฝังอยู่สำหรับ XR
  • การเข้าถึงอุปกรณ์ที่ขยายเพิ่มผ่าน Android Partner Device Labs ในการสตรีมอุปกรณ์ Android
  • ตัวอย่างการเขียนที่ดีขึ้นด้วยการไปยังส่วนต่างๆ ของโค้ดที่ปรับปรุงแล้วและเครื่องมือเลือกตัวอย่างการเขียนใหม่
  • เปิดใช้คอมไพเลอร์ K2 Kotlin โดยค่าเริ่มต้นเพื่อประสิทธิภาพการบิลด์ที่เร็วขึ้น
  • เครื่องมือสำหรับหน้าหน่วยความจำขนาด 16 KB พร้อมคำเตือน Lint, การวิเคราะห์ และโปรแกรมจำลองเพื่อช่วยคุณเตรียมพร้อมสำหรับอุปกรณ์ที่มีหน้าหน่วยความจำขนาด 16 KB ที่กำลังจะเปิดตัว

การสตรีมอุปกรณ์ Android ที่ทำงานด้วย Firebase

device-streaming.webp

การสตรีมอุปกรณ์ Android ที่ทำงานด้วย Firebase ได้เปิดตัวการรองรับที่เสถียรสำหรับห้องทดลองอุปกรณ์ของพาร์ทเนอร์ Android ซึ่งช่วยให้คุณเชื่อมต่อกับอุปกรณ์ Android จริงที่โฮสต์โดยพาร์ทเนอร์ OEM จากระยะไกลได้ ซึ่งรวมถึง Samsung, Xiaomi, OPPO, OnePlus และ vivo

เร่งการพัฒนาด้วยการเปิดตัว Android Studio ทุกเดือน ซึ่งบ่อยกว่าเดิมถึง 2 เท่า

accelarating-releases.webp

Android Studio กำลังเปลี่ยนไปใช้ความถี่ในการเผยแพร่เวอร์ชันเสถียรแบบรายเดือนเพื่อเร่งการนำเสนอฟีเจอร์ใหม่และการแก้ไขข้อบกพร่องที่สำคัญให้คุณ แม้ว่า Android Studio IDE จะอัปเดตทุกเดือน แต่แพลตฟอร์ม IntelliJ เวอร์ชันใหม่จะเปิดตัวทุกๆ 2-3 เดือน โดยมีการอัปเดตฟีเจอร์ใหม่ๆ เพื่อเติมเต็มเวอร์ชันเสถียรชั่วคราว โปรแกรมจำลองของ Android และปลั๊กอิน Android Gradle จะยังคงอัปเดตแยกกันทุกๆ 2 เดือน กำหนดการเผยแพร่ที่รวดเร็วขึ้นนี้ได้รับการสนับสนุนจากการลงทุนระยะยาวในโครงสร้างพื้นฐานสำหรับการทดสอบ

มีอะไรใหม่ใน Jetpack Compose เวอร์ชันเดือนสิงหาคม 2025 🚀

jetpack-compose.webp

Jetpack Compose รุ่นเดือนสิงหาคม 2025 (เวอร์ชัน 1.9) เสถียรแล้ว รุ่นนี้เปิดตัว Modifier.dropShadow และ Modifier.innerShadow สำหรับการแสดงผลเอฟเฟกต์เงาของกล่อง ตัวแก้ไข onVisibilityChanged และ onFirstVisible ใหม่ช่วยให้คุณติดตามระดับการมองเห็นองค์ประกอบสำหรับการอัปเดต UI หรือการบันทึกการแสดงผลได้ คุณสามารถใช้การจัดรูปแบบที่สมบูรณ์ภายใน OutputTransformation โดยใช้ TextFieldBuffer.addStyle สำหรับการเปลี่ยนรูปแบบข้อความ

ตอนนี้องค์ประกอบพื้นฐานของ LazyLayout มีความเสถียรแล้ว และคุณสามารถกำหนด LazyLayoutCacheWindow เพื่อปรับปรุงประสิทธิภาพของ Lazy List และ Grid ด้วยการดึงข้อมูลล่วงหน้าที่ได้รับการปรับปรุง Scrollable2D ช่วยให้เลื่อนได้ 2 มิติ ซึ่งรวมถึงการเลื่อนแบบเร็วและการเลื่อนที่ฝังอยู่ พร้อมการปรับปรุงต่างๆ สำหรับการทำงานร่วมกันของการเลื่อนและการเลื่อนที่ฝังอยู่กับ Views API แบบเลือกใช้ (Composer.setDiagnosticStackTraceEnabled) จะให้รายละเอียดตำแหน่งข้อขัดข้องที่สมบูรณ์ยิ่งขึ้นในสแต็กเทรซ ซึ่งแนะนำสำหรับบิลด์การแก้ไขข้อบกพร่องเท่านั้น คำอธิบายประกอบ @RememberInComposition และ @FrequentlyChangingValue ใหม่ พร้อมกับการตรวจสอบ Lint ที่เกี่ยวข้องพร้อมใช้งานในไลบรารีคำอธิบายประกอบรันไทม์ใหม่ คุณปรับแต่งเมนูตามบริบทได้โดยใช้ Modifier.appendTextContextMenuComponents และ Modifier.filterTextContextMenuComponents ตอนนี้คุณต้องใช้ Android Gradle Plugin (AGP) / Lint เวอร์ชัน 8.8.2 ขึ้นไป

Media3 1.8.0 — มีอะไรใหม่ 🚀

media3.webp

Media3 1.8.0 เผยแพร่แล้ว โดยมาพร้อมฟีเจอร์และการปรับปรุงใหม่ๆ หลายอย่าง ExoPlayer มีโหมดการลากแถบเวลาสำหรับการกรอวิดีโอที่ผู้ใช้ดำเนินการบ่อยๆ ซึ่งคุณเปิดใช้ได้ผ่าน ExoPlayer.setScrubbingModeEnabled HlsInterstitialsAdsLoader รองรับไลฟ์สดสำหรับการแทรกโฆษณาตามคำแนะนำของเซิร์ฟเวอร์แล้ว

เราได้อัปเดต MetadataRetriever เพื่อให้คุณดึงข้อมูลระยะเวลาของรายการสื่อได้โดยไม่ต้องเล่น สำหรับ Transformer การเปิดตัวนี้จะช่วยให้การตัดวิดีโอเร็วขึ้นโดยใช้รายการแก้ไข MP4 ที่มี experimentalSetMp4EditListTrimEnabled และการเพิ่มประสิทธิภาพโปรแกรมเปลี่ยนไฟล์เฉพาะชิปเซ็ตผ่าน CodecDbLite ซึ่งเปิดใช้โดยการเรียกใช้ setEnableCodecDbLite ใน DefaultEncoderFactory.Builder

การอัปเดตเพิ่มเติมรวมถึงการรองรับการดาวน์โหลดบางส่วนใน Downloader ด้วย PreCacheHelper, การกำหนดเส้นทางเสียง XR อัตโนมัติใน ExoPlayer และการโต้ตอบ MediaCodec ที่มีประสิทธิภาพมากขึ้น ตอนนี้โมดูล MediaSession จะแสดงการแจ้งเตือนไว้นานขึ้นโดยค่าเริ่มต้น และแอปสาธิตเซสชันสื่อจะแสดงฟังก์ชันการกลับมาเล่นต่อ แอปเดโม Composition ใหม่ที่สร้างด้วย Kotlin และ Compose จะสาธิตการตัดต่อวิดีโอแบบหลายชิ้นงานขั้นสูง

บทความ 📚

#WeArePlay: พบกับผู้คนที่เขียนโค้ดเพื่อสร้างโลกที่ยั่งยืนยิ่งขึ้น

weareplay.webp

โครงการริเริ่ม #WeArePlay ไฮไลต์แอป Android และเกมที่ช่วยแก้ปัญหาด้านสิ่งแวดล้อม เกม BoRa — Iguaçu National Park ซึ่งพัฒนาโดย Mayla, Flávia, Andréia และ Ariane มอบประสบการณ์แบบอินเทอร์แอกทีฟที่เข้าถึงได้และนำรูปแบบเกมมาใช้เพื่อการศึกษาด้านธรรมชาติระหว่างการเข้าชมอุทยาน แอป CyberTracker ของ Louis และ Justin ช่วยให้นักติดตามชนพื้นเมืองที่ไม่รู้หนังสือสามารถบันทึกข้อมูลความหลากหลายทางชีวภาพผ่านอินเทอร์เฟซที่ใช้ไอคอน ซึ่งช่วยสนับสนุนความพยายามในการอนุรักษ์ สุดท้าย Earth5R ซึ่งก่อตั้งโดย Bharati และ Saurabh ให้ความรู้ด้านสิ่งแวดล้อมและเชื่อมโยงผู้ใช้กับการฝึกงานและโปรเจ็กต์ต่างๆ เพื่อพัฒนาทักษะสำหรับเศรษฐกิจสีเขียว

HDR คืออะไร 🌟

hdr.webp

High Dynamic Range (HDR) ช่วยเพิ่มความสว่างสูงสุดได้มากกว่า Standard Dynamic Range (SDR) สำหรับนักพัฒนาแอป Android ซึ่งช่วยให้ภาพมีความสมจริงมากขึ้น Android รองรับ HDR สำหรับวิดีโอและรูปภาพ รวมถึงเทคโนโลยีอย่าง UltraHDR เพื่อให้เข้ากันได้แบบย้อนหลัง

การทำความเข้าใจสีเกี่ยวข้องกับองค์ประกอบ 3 อย่าง ได้แก่

  • ความลึกของบิต: กำหนดความแม่นยำของการแสดงสี โดยความลึกที่สูงขึ้นจะทำให้การเปลี่ยนสีราบรื่นขึ้น
  • ฟังก์ชันการโอน: จับคู่ค่าพิกเซลที่เป็นตัวเลขกับความสว่างหรือสีที่แสดง โดยปรับให้สอดคล้องกับการตอบสนองทางสายตาที่ไม่ใช่เชิงเส้นของมนุษย์ ตัวอย่างเช่น sRGB, HLG และ PQ
  • ขอบเขตสี: แสดงช่วงสีที่อุปกรณ์สามารถสร้างขึ้นใหม่ได้

ความเข้าใจผิดที่พบบ่อยเกี่ยวกับ HDR

  • สีสันสดใส: ขอบเขตสีที่กว้างขึ้น เช่น Display P3 และ Adobe RGB มีให้บริการก่อน HDR และจอแสดงผลส่วนใหญ่ยังคงจำกัดอยู่ที่ P3 แม้จะมีเนื้อหา BT.2020 ก็ตาม
  • คอนทราสต์มากขึ้น/รายละเอียดสีดำดีขึ้น: HDR ไม่ได้ให้สีดำที่เข้มกว่า SDR บนจอแสดงผลเดียวกันโดยเนื้อแท้ จอโอแอลอีดีให้คอนทราสต์ที่ไม่มีที่สิ้นสุดสำหรับทั้ง 2 อย่าง แม้ว่า PQ จะจัดสรรบิตให้กับบริเวณที่มืดมากกว่า แต่ก็ไม่ใช่ฟีเจอร์ HDR แบบสากล
  • ความลึกของบิตที่สูงขึ้น: แม้ว่าโปรไฟล์วิดีโอ HDR บางโปรไฟล์ (เช่น HDR10) จะใช้สตรีม 10 หรือ 12 บิต แต่ก็เป็นโปรไฟล์เฉพาะและไม่ได้เป็นส่วนหนึ่งของ HDR เอง นอกจากนี้ ความลึกของบิตที่สูงขึ้นยังพบได้ทั่วไปในรูปแบบภาพอื่นๆ ด้วย

HDR หมายถึง ความสว่างสูงสุดที่สูงขึ้นเป็นหลัก "เฮดรูม HDR" นี้กำหนดเป็นพื้นที่แบบลอยตัวที่สัมพันธ์กับ SDR แม้ว่าวิดีโอ HDR แบบดั้งเดิมมักจะเข้ารหัสเฮดรูมแบบคงที่ แต่จอแสดงผลสมัยใหม่ใช้เฮดรูมแบบไดนามิก ซึ่งอาจทำให้คุณภาพแตกต่างกัน เทคโนโลยีอย่าง Ultra HDR และ Gain Map เป็นทางเลือกที่ใช้บิตอย่างมีประสิทธิภาพ ชุดเครื่องมือ UI ของ Android ใช้ API ของ extendedRangeBrightness เพื่อมอบประสบการณ์การใช้งาน HDR แม้จะใช้ RGBA_8888 ก็ตาม

วิดีโอ 📹

องค์ประกอบที่ใช้ร่วมกันขั้นสูงที่มีการเปลี่ยนรูปร่าง | เคล็ดลับเกี่ยวกับ Jetpack Compose

ตอนนี้ Jetpack Compose ช่วยให้สามารถเปลี่ยนองค์ประกอบที่ใช้ร่วมกันขั้นสูง เปลี่ยนรูปร่างที่ซับซ้อน และแสดงภาพเคลื่อนไหวได้ นักพัฒนาแอปสามารถกำหนดค่า SharedTransitionLayout ที่ระดับบนสุดของแอปและใช้ Modifier.sharedBounds เพื่อลิงก์องค์ประกอบต่างๆ

การเปลี่ยนรูปร่างเป็นฟีเจอร์ใหม่ที่สำคัญ ซึ่งทำได้โดยใช้ประโยชน์จากไลบรารีรูปร่างกราฟิก AndroidX ของ Material 3 ซึ่งเกี่ยวข้องกับการสร้างออบเจ็กต์ Morph ที่มีรูปร่างเริ่มต้น/สิ้นสุดที่กำหนดไว้ ขับเคลื่อนความคืบหน้าด้วย animateFloat (จาก AnimatedVisibilityScope) และใช้เป็นคลิปผ่าน OverlayClip ที่กำหนดเอง เอฟเฟกต์เปิดเผยใช้ skipToLookaheadSize และ skipToLookaheadPosition ภาพเคลื่อนไหวขั้นสูงทั้งหมดเหล่านี้ยังเข้ากันได้กับท่าทางสัมผัสการย้อนกลับที่คาดการณ์ได้ด้วย

Gemini แบบหลายโมดัลใน Android Studio: การพัฒนา UI ที่ทำงานด้วยระบบ AI

AI จาก Gemini ใน Android Studio ช่วยในการพัฒนา UI โดยการสร้างโค้ดจากการออกแบบ (รวมถึงรูปภาพเป็นโค้ด) สร้างตัวอย่าง Compose ด้วยข้อมูลสังเคราะห์ และปรับแต่ง UI ที่มีอยู่ผ่านคำสั่งโดยตรง

ใช้ SDK ที่เปิดใช้รันไทม์

Android 14 เปิดตัว SDK Runtime ซึ่งเป็นเทคโนโลยีใหม่ที่แยก SDK ของบุคคลที่สามไว้ในแซนด์บ็อกซ์กระบวนการที่ปลอดภัยและแยกต่างหากเพื่อเพิ่มความเป็นส่วนตัวและความปลอดภัย

สำหรับนักพัฒนาแอป

  • SDK ที่เปิดใช้รันไทม์ (RE) จะทำงานในกระบวนการที่แยกต่างหากนี้
  • SDK ที่รับรู้รันไทม์ (RA) ทำหน้าที่เป็นสื่อกลางภายในแอป
  • โหลด RE SDK โดยใช้ SdkSandboxManagerCompat โดยสังเกตข้อจำกัด (เช่น ทำงานอยู่เบื้องหน้า โหลดครั้งเดียว)
  • เครื่องมือ Shim ช่วยให้การสื่อสารระหว่างกระบวนการระดับต่ำง่ายขึ้น
  • แสดงผล UI จาก RE SDK โดยใช้ SandboxedSdkView และ SandboxedUiAdapter
  • เปิดกิจกรรมจากรันไทม์ของ SDK โดยใช้ SdkActivityLauncher

การเปลี่ยนรูปร่างของ Material 3 ใน WearOS | เคล็ดลับเกี่ยวกับ Jetpack Compose

ตอนนี้ Wear OS Material 3 สำหรับ Compose ช่วยให้การเปลี่ยนรูปร่างง่ายขึ้น นักพัฒนาแอปสามารถเพิ่มการเปลี่ยนแปลงรูปร่างแบบเคลื่อนไหวให้กับปุ่มกลมได้อย่างง่ายดายด้วย IconButtonDefaults.animatedShapes, สร้างกลุ่มปุ่มที่เคลื่อนไหวการเปลี่ยนแปลงความกว้างโดยใช้คอมโพเนนต์ ButtonGroup และ Modifier.animateWidth() รวมถึงสร้างรายการที่เลื่อนในแนวตั้ง (TransformingLazyColumn) ซึ่งรายการจะปรับขนาดและเปลี่ยนรูปร่างโดยใช้ TransformationSpec เมื่อเข้าใกล้ขอบหน้าจอ

AndroidX Releases 🚀

สรุปการเปลี่ยนแปลงของ AndroidX โดยจัดลำดับความสำคัญของการเปลี่ยนแปลงที่เกี่ยวข้องกับนักพัฒนาแอป Android มากที่สุดมีดังนี้

การเปลี่ยนแปลงที่ส่งผลกระทบโดยรวมสำหรับไลบรารี Compose:

  • เริ่มต้นminSdkเพิ่มเป็น API 23: สำหรับ androidx.compose animation, foundation, material, runtime และ ui เวอร์ชัน SDK ขั้นต่ำเริ่มต้นได้เปลี่ยนจาก API 21 เป็น API 23 ซึ่งหมายความว่าหากคุณใช้ไลบรารี Compose เวอร์ชันอัลฟ่าล่าสุด แอปของคุณจะต้องใช้ Android 6.0 (Marshmallow) ขึ้นไปโดยปริยาย

การเปลี่ยนแปลงที่สำคัญสำหรับนักพัฒนาแอป Compose

  • API เก็บรักษาใหม่ (Compose Runtime): เปิดตัว API เก็บรักษาที่คล้ายกับ rememberSaveable แต่สำหรับค่าที่ออกจากลำดับชั้นของ Composition โดยไม่มีการทำให้เป็นอนุกรม โดยมีอายุการใช้งานสั้นกว่าค่าที่บันทึกไว้และทำงานคล้ายกับ ViewModel ซึ่งเป็นวิธีใหม่ในการจัดการสถานะสำหรับ Composable ที่อาจเข้าและออกจาก Composition
  • การเปลี่ยนองค์ประกอบแบบใช้ร่วมกันที่ได้รับการปรับปรุง (Compose Animation และ UI): API ใหม่เพื่อเปิด/ปิดใช้องค์ประกอบแบบใช้ร่วมกันแบบไดนามิก พิจารณาการเปลี่ยนที่กำลังดำเนินอยู่ และตั้งค่าขอบเขตเป้าหมายทางเลือกเมื่อมีการทิ้งองค์ประกอบแบบใช้ร่วมกัน นอกจากนี้ยังมี Modifier.skipToLookaheadPosition ใหม่สำหรับเลย์เอาต์การตรึงด้วย
  • การดึงข้อมูลล่วงหน้าของเพจเจอร์ที่ได้รับการปรับปรุง (Compose Foundation): ตอนนี้กลยุทธ์การดึงข้อมูลล่วงหน้าของเพจเจอร์ใช้ "หน้าต่างแคช" (ขนาดวิวพอร์ต 1 รายการ) แทนรายการเดียว และเปิดใช้การดึงข้อมูลล่วงหน้าเริ่มต้นโดยค่าเริ่มต้น นอกจากนี้ ระบบจะเก็บรายการไว้นานขึ้นเพื่อให้การเลื่อนอย่างราบรื่นยิ่งขึ้น
  • ปรับปรุงการจัดการโฟกัสสำหรับเมาส์/ทัชแพด (Compose Foundation และ UI): ตอนนี้ ComposeViews จะล้างโฟกัสโดยอัตโนมัติเมื่อเกิดเหตุการณ์การกดตัวชี้ (จากเมาส์หรือทัชแพด) นอกโหนดที่โฟกัส ซึ่งคุณเลือกไม่ใช้ได้
  • สี่เหลี่ยมผืนผ้าโฟกัสที่ปรับแต่งได้ (Compose Foundation): ตอนนี้ FocusProperties ช่วยให้คุณกำหนดพื้นที่โฟกัสที่กำหนดเองแทนที่จะใช้กรอบล้อมรอบเป็นค่าเริ่มต้น ซึ่งจะช่วยปรับปรุงการไปยังส่วนต่างๆ ของโฟกัสและตรรกะ "แสดงในมุมมอง" ในคอนเทนเนอร์ที่เลื่อนได้
  • LifecycleOwner Composable (วงจร): Composable ใหม่ช่วยให้สร้างอินสแตนซ์ LifecycleOwner ที่กำหนดขอบเขตได้โดยตรงภายในโครงสร้าง UI ซึ่งมีประโยชน์อย่างยิ่งสำหรับการจัดการวงจรของคอมโพเนนต์อย่างอิสระ และสำหรับไลบรารีอย่าง Navigation
  • การรองรับประเภทที่อนุญาตค่า Null ใน SavedStateHandle (Lifecycle และ SavedState): ลดความซับซ้อนในการบันทึกและกู้คืนพร็อพเพอร์ตี้ที่อนุญาตค่า Null ด้วยการรองรับแบบเนทีฟใน SavedStateHandle และ SavedStateRegistryOwner
  • ใหม่ LineHeightStyle.Mode.Tight (Compose Foundation และ UI): โหมด Tight ใหม่ช่วยบังคับใช้ความสูงของบรรทัดที่เล็กลง แม้ว่าอาจหมายถึงการตัดอักขระที่สูงขึ้นก็ตาม ซึ่งช่วยให้ควบคุมเลย์เอาต์ข้อความได้แม่นยำยิ่งขึ้น
  • แตะสองครั้งเพื่อเลือกคำ (Compose Foundation): เพิ่มการรองรับการแตะสองครั้งเพื่อเลือกคำใน SelectionContainer และ BasicTextField
  • การเปลี่ยนแปลงลักษณะการทำงานของ WindowInsets (Compose UI และ Foundation):
    ◦ API WindowInsets.cutoutPath ใหม่เพื่อรับเส้นทางสำหรับหน้าจอรอยบาก
    ◦ นำแฟล็ก isWindowInsetsDefaultPassThroughEnabled ออกแล้ว โดยค่าเริ่มต้น WindowInsets จะไม่ใช้โดยค่าเริ่มต้น เพื่อให้ View ย่อยรับได้
  • AndroidView requestRectangleOnScreen การแก้ไข (Compose Foundation): ตอนนี้คำขอที่สร้างโดย AndroidView (เช่น EditText ที่พยายามอยู่บนหน้าจอ) จะส่งต่อไปยัง Compose อย่างถูกต้อง
  • การเลื่อนลูกกลิ้งเมาส์แบบ 2 มิติที่ได้รับการปรับปรุง (Compose Foundation และ UI): รองรับเหตุการณ์การเลื่อนลูกกลิ้งเมาส์แบบ 2 มิติได้ดียิ่งขึ้น พร้อม API ทดสอบใหม่และแฟล็กเพื่อควบคุมลักษณะการทำงาน

ไลบรารีและยูทิลิตีใหม่

  • androidx.core:core-backported-fixes (ไลบรารีใหม่): ไลบรารีใหม่นี้ช่วยให้นักพัฒนาแอปตรวจสอบได้ว่ามีการใช้การแก้ไขข้อบกพร่องที่สำคัญ (เช่น ปัญหาระดับแพลตฟอร์ม เช่น ข้อบกพร่องของกล้องบางอย่าง) กับอุปกรณ์หรือไม่ ซึ่งจะช่วยให้คุณมอบประสบการณ์การใช้งานที่แตกต่างกันแก่ผู้ใช้ได้ โดยขึ้นอยู่กับว่าข้อบกพร่องที่ทราบได้รับการแก้ไขแล้วหรือไม่

การเปลี่ยนแปลงที่สำคัญอื่นๆ

  • กิจกรรมและการป้อนข้อมูลในเกม: เพิ่มการรองรับขนาดหน้าหน่วยความจำ 16 KB โดยค่าเริ่มต้นและการรองรับเมาส์สำหรับ GameActivity
  • การจัดตำแหน่งเคล็ดลับเครื่องมือ Material3: ผู้ให้บริการตำแหน่งเพิ่มเติมสำหรับเคล็ดลับเครื่องมือ ซึ่งช่วยให้วางตำแหน่งไว้ด้านบน ด้านล่าง ด้านซ้าย หรือด้านขวาของ Anchor ได้
  • การแก้ไข Material3 DatePicker: ตรวจสอบว่า DatePicker เป็นไปตามภาษาของตนเองสำหรับการจัดรูปแบบตัวเลขและแก้ไขปัญหาการแสดงผลจากขวาไปซ้าย
  • การรองรับ display_override ของ TWA (เบราว์เซอร์): เพิ่มการรองรับพร็อพเพอร์ตี้ไฟล์ Manifest display_override ของ TWA ซึ่งช่วยให้ควบคุมการแสดงผล TWA ได้มากขึ้น
  • เปิด URL เริ่มต้นในแอปภายนอก (เบราว์เซอร์): เพิ่ม Intent เพื่ออนุญาตให้เปิด URL เริ่มต้นของ TWA ในเบราว์เซอร์ภายนอก

Android Developers Backstage

Android Developers Backstage กลับมาอีกครั้งพร้อมตอนใหม่

การป้อนข้อความอัตโนมัติใน Compose

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

 

เอาล่ะ… 👋

เนื้อหาทั้งหมดในฉบับนี้ประกอบด้วย ข้อมูลเกี่ยวกับ Android 16 QPR2 เบต้า 1, ฟีเจอร์ใหม่ของ Android Studio Narwhal, Jetpack Compose 1.9, Media 3 1.8, การเปลี่ยนรูปร่าง และการป้อนข้อความอัตโนมัติใน Compose รวมถึงข้อมูลอื่นๆ อีกมากมาย

โปรดกลับมาดูข้อมูลอัปเดตครั้งถัดไปจากจักรวาลนักพัฒนาแอป Android ในเร็วๆ นี้

เขียนโดย
อ่านต่อ