ข่าวผลิตภัณฑ์

Android 17 รุ่นเบต้าที่ 2

อ่าน 6 นาที
Matthew McCullough
รองประธานฝ่ายจัดการผลิตภัณฑ์ นักพัฒนาแอป Android

วันนี้เราจะเปิดตัว Android 17 รุ่นเบต้าที่ 2 ซึ่งเป็นการสานต่องานของเราในการสร้างแพลตฟอร์มที่ให้ความสำคัญกับความเป็นส่วนตัว ความปลอดภัย และประสิทธิภาพที่ได้รับการปรับปรุงการอัปเดตนี้มาพร้อมกับความสามารถใหม่ๆ มากมาย รวมถึง EyeDropper API และเครื่องมือเลือกรายชื่อติดต่อที่ช่วยรักษาความเป็นส่วนตัว นอกจากนี้ เรายังเพิ่ม API การวัดระยะทางขั้นสูง, API การส่งต่อข้ามอุปกรณ์ และอื่นๆ

การเปิดตัวนี้เป็นการเปลี่ยนแปลงจังหวะการเปิดตัวของเราอย่างต่อเนื่อง โดยจะมีการอัปเดต SDK ขนาดเล็กตามหลังการเปิดตัว SDK หลักประจำปีในไตรมาสที่ 2

ประสบการณ์ของผู้ใช้และ UI ของระบบ

ฟองอากาศ

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

Bubbles.gif

คุณควรปฏิบัติตามหลักเกณฑ์สำหรับการรองรับโหมดหลายหน้าต่างเพื่อให้แอปทำงานเป็นฟองอากาศได้อย่างถูกต้อง

ฟองอากาศยังไม่เปิดใช้ในรุ่นเบต้า 2 อย่างเต็มรูปแบบ โปรดรอติดตามฟองอากาศในบิลด์ในอนาคตของ Android 17

EyeDropper API

EyeDropper API ระดับระบบใหม่ช่วยให้แอปขอสีจากพิกเซลใดก็ได้บนจอแสดงผลโดยไม่จำเป็นต้องมีสิทธิ์การจับภาพหน้าจอที่ละเอียดอ่อน

Eyedropper_Tester.webp
val eyeDropperLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
  result -> if (result.resultCode == Activity.RESULT_OK) {
    val color = result.data?.getIntExtra(Intent.EXTRA_COLOR, Color.BLACK)
    // Use the picked color in your app
  }
}

fun launchColorPicker() {
  val intent = Intent(Intent.ACTION_OPEN_EYE_DROPPER)
  eyeDropperLauncher.launch(intent)
}

เครื่องมือเลือกรายชื่อติดต่อ

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

android-17-contact-picker.gif
val contactPicker = rememberLauncherForActivityResult(StartActivityForResult()) {
    if (it.resultCode == RESULT_OK) {
        val uri = it.data?.data ?: return@rememberLauncherForActivityResult
        // Handle result logic
        processContactPickerResults(uri)
    }
}

val dataFields = arrayListOf(Email.CONTENT_ITEM_TYPE, Phone.CONTENT_ITEM_TYPE)
val intent = Intent(ACTION_PICK_CONTACTS).apply {
    putStringArrayListExtra(EXTRA_PICK_CONTACTS_REQUESTED_DATA_FIELDS, dataFields)
    putExtra(EXTRA_ALLOW_MULTIPLE, true)
    putExtra(EXTRA_PICK_CONTACTS_SELECTION_LIMIT, 5)
}

contactPicker.launch(intent)

ความเข้ากันได้ของการจับ Pointer กับทัชแพดที่ง่ายขึ้น

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

// To request the new default relative mode (mouse-like events)
// This is the same as requesting with View.POINTER_CAPTURE_MODE_RELATIVE
view.requestPointerCapture()

// To request the legacy absolute mode (raw touch coordinates)
view.requestPointerCapture(View.POINTER_CAPTURE_MODE_ABSOLUTE)

ขอบเขตการพักของเครื่องมือเลือกแบบโต้ตอบ

การเรียกใช้ getInitialRestingBounds ใน ChooserSession ของ Android ช่วยให้แอประบุตำแหน่งเป้าหมายที่เครื่องมือเลือกจะครอบครองหลังจากแอนิเมชันและการโหลดข้อมูลเสร็จสมบูรณ์ ซึ่งช่วยให้ปรับ UI ได้ดียิ่งขึ้น

การเชื่อมต่อและข้ามอุปกรณ์

การส่งต่อแอปข้ามอุปกรณ์

Handoff API ใหม่ช่วยให้คุณระบุสถานะของแอปพลิเคชันที่จะกลับมาทำงานต่อในอุปกรณ์อื่น เช่น แท็บเล็ต Android ได้ เมื่อเลือกใช้ ระบบจะซิงค์สถานะผ่าน CompanionDeviceManager และแสดงคำแนะนำการส่งต่อใน Launcher ของอุปกรณ์ที่อยู่ใกล้เคียงของผู้ใช้ ฟีเจอร์นี้ออกแบบมาเพื่อมอบความต่อเนื่องของงานที่ราบรื่น ช่วยให้ผู้ใช้ทำงานต่อจากจุดที่ค้างไว้ในเวิร์กโฟลว์ของตนในระบบนิเวศ Android ที่สำคัญคือ Handoff รองรับทั้งการเปลี่ยนจากแอปที่มาพร้อมเครื่องหนึ่งไปยังอีกแอปที่มาพร้อมเครื่องหนึ่งและการเปลี่ยนจากแอปหนึ่งไปยังเว็บแบบสำรอง ซึ่งมอบความยืดหยุ่นสูงสุดและรับประกันประสบการณ์การใช้งานที่สมบูรณ์แม้ว่าจะไม่ได้ติดตั้งแอปที่มาพร้อมเครื่องในอุปกรณ์ที่รับ

API การวัดระยะทางขั้นสูง

เรากำลังเพิ่มการรองรับเทคโนโลยีการวัดระยะทางใหม่ 2 รายการ ได้แก่

  1. UWB DL-TDOA ซึ่งช่วยให้แอปใช้ UWB สำหรับการนำทางในอาคารได้ พื้นผิว API นี้เป็นไปตามข้อกำหนด DL-TDOA 4.0 ของ FIRA (Fine Ranging Consortium) และช่วยให้การนำทางในอาคารรักษาความเป็นส่วนตัวได้  (หลีกเลี่ยงการติดตามอุปกรณ์โดย Anchor)
  2. การตรวจจับความใกล้เคียง ซึ่งช่วยให้แอปใช้ข้อกำหนดการวัดระยะทางใหม่ที่ WFA (WiFi Alliance) กำลังนำมาใช้ได้ เทคโนโลยีนี้ให้ความน่าเชื่อถือและความแม่นยำที่ดียิ่งขึ้นเมื่อเทียบกับข้อกำหนดการวัดระยะทางที่มีอยู่ซึ่งอิงตาม Wifi Aware

การเพิ่มประสิทธิภาพแพ็กเกจอินเทอร์เน็ต

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

ฟังก์ชันหลัก ความเป็นส่วนตัว และประสิทธิภาพ

การเข้าถึงเครือข่ายภายใน

Android 17 ขอแนะนำสิทธิ์รันไทม์ ACCESS_LOCAL_NETWORK เพื่อปกป้องผู้ใช้จากการเข้าถึงเครือข่ายภายในโดยไม่ได้รับอนุญาต เนื่องจากสิทธิ์นี้อยู่ในกลุ่มสิทธิ์ NEARBY_DEVICES ที่มีอยู่ ผู้ใช้ที่ให้สิทธิ์ NEARBY_DEVICES อื่นๆ ไปแล้วจะไม่ได้รับข้อความแจ้งอีก การประกาศและขอสิทธิ์นี้จะช่วยให้แอปค้นหาและเชื่อมต่อกับอุปกรณ์ในเครือข่ายท้องถิ่น (LAN) ได้ เช่น อุปกรณ์สมาร์ทโฮมหรือตัวรับสัญญาณการแคสต์ ซึ่งจะช่วยป้องกันไม่ให้แอปที่เป็นอันตรายใช้ประโยชน์จากการเข้าถึงเครือข่ายภายในแบบไม่จำกัดเพื่อติดตามผู้ใช้และเก็บข้อมูลระบุตัวตนของผู้ใช้แบบลับๆ ตอนนี้แอปที่กำหนดเป้าหมายเป็น Android 17 ขึ้นไปจะมี 2 วิธีในการสื่อสารกับอุปกรณ์ LAN ได้แก่ ใช้เครื่องมือเลือกอุปกรณ์ที่ระบบเป็นตัวกลางและช่วยรักษาความเป็นส่วนตัวเพื่อข้ามข้อความแจ้งขอสิทธิ์ หรือขอสิทธิ์ใหม่นี้อย่างชัดเจนในรันไทม์เพื่อคงการสื่อสารในเครือข่ายภายใน

การออกอากาศการเปลี่ยนแปลงออฟเซ็ตเขตเวลา

ตอนนี้ Android มี Intent การออกอากาศที่เชื่อถือได้ ACTION_TIMEZONE_OFFSET_CHANGED ซึ่งจะเริ่มทำงานเมื่อออฟเซ็ตเขตเวลาของระบบเปลี่ยนแปลง เช่น ระหว่างการเปลี่ยนไปใช้เวลาออมแสง Intent นี้จะเสริม Intent การออกอากาศที่มีอยู่ ACTION_TIME_CHANGED และ ACTION_TIMEZONE_CHANGED ซึ่งจะเริ่มทำงานเมื่อการประทับเวลา Unix เปลี่ยนแปลงและเมื่อรหัสเขตเวลาเปลี่ยนแปลงตามลำดับ

การจัดการและการจัดลำดับความสำคัญของ NPU

แอปที่กำหนดเป้าหมายเป็น Android 17 ซึ่งจำเป็นต้องเข้าถึง NPU โดยตรงต้องประกาศ FEATURE_NEURAL_PROCESSING_UNIT ในไฟล์ Manifest เพื่อไม่ให้ถูกบล็อกไม่ให้เข้าถึง NPU ซึ่งรวมถึงแอปที่ใช้ LiteRT NPU Delegate, SDK เฉพาะของผู้ให้บริการ รวมถึง NNAPI ที่เลิกใช้งานแล้ว

การรองรับ ICU 78 และ Unicode 17

ไลบรารีการแปลเป็นภาษาท้องถิ่นหลักได้รับการอัปเดตเป็น ICU 78 ซึ่งขยายการรองรับสคริปต์ อักขระ และบล็อกอิโมจิใหม่ๆ รวมถึงช่วยให้จัดรูปแบบออบเจ็กต์ เวลาได้โดยตรง

การป้องกัน SMS OTP

Android กำลังขยายการป้องกัน SMS OTP โดยหน่วงเวลาการเข้าถึงข้อความ SMS ที่มี OTP โดยอัตโนมัติ ก่อนหน้านี้ การป้องกันมุ่งเน้นไปที่รูปแบบ SMS Retriever เป็นหลัก ซึ่งการส่งข้อความที่มีแฮช SMS Retriever จะล่าช้าสำหรับแอปส่วนใหญ่เป็นเวลา 3 ชั่วโมง อย่างไรก็ตาม แอปบางแอป เช่น แอป SMS เริ่มต้น เป็นต้น และแอปที่ตรงกับแฮชจะได้รับการยกเว้นจากความล่าช้านี้ การอัปเดตนี้ขยายการป้องกันไปยังข้อความ SMS ทั้งหมดที่มี OTP สำหรับแอปส่วนใหญ่ ข้อความ SMS ที่มี OTP จะเข้าถึงได้หลังจากผ่านไป 3 ชั่วโมงเพื่อช่วยป้องกันการขโมย OTP ระบบจะระงับการออกอากาศ SMS_RECEIVED_ACTION และกรองการค้นหาฐานข้อมูลของผู้ให้บริการ SMS แอปเหล่านี้จะเข้าถึงข้อความ SMS ได้หลังจากผ่านไป 3 ชั่วโมง

การเข้าถึงข้อความ SMS รูปแบบ WebOTP ล่าช้า

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

การเข้าถึงข้อความ SMS มาตรฐานที่มี OTP ล่าช้า

สำหรับข้อความ SMS ที่มี OTP ซึ่งไม่ได้ใช้รูปแบบ WebOTP หรือ SMS Retriever ข้อความ SMS ที่มี OTP จะเข้าถึงได้หลังจากผ่านไป 3 ชั่วโมงสำหรับแอปส่วนใหญ่ การเปลี่ยนแปลงนี้มีผลกับแอปที่กำหนดเป้าหมายเป็น Android 17 (ระดับ API 37) ขึ้นไปเท่านั้น

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

แอปทั้งหมดที่ต้องอ่านข้อความ SMS เพื่อแยก OTP ควรเปลี่ยนไปใช้ SMS Retriever หรือ SMS User Consent API เพื่อให้ฟังก์ชันการทำงานยังคงอยู่

กำหนดการของ Android 17

เราจะเปลี่ยนจากรุ่นเบต้าเป็นเหตุการณ์สำคัญด้านความเสถียรของแพลตฟอร์มอย่างรวดเร็ว ซึ่งกำหนดไว้ในเดือนมีนาคม ในเหตุการณ์สำคัญนี้ เราจะมอบ SDK/NDK API ขั้นสุดท้าย นับจากนั้นเป็นต้นมา แอปของคุณจะกำหนดเป้าหมายเป็น SDK 37 และเผยแพร่ไปยัง Google Play ได้ ซึ่งจะช่วยให้คุณทำการทดสอบและรวบรวมความคิดเห็นของผู้ใช้ให้เสร็จสมบูรณ์ในอีกหลายเดือนก่อนที่ Android 17 จะพร้อมให้บริการเวอร์ชันสำหรับผู้ใช้ทั่วไป

Android Release Timeline.png

การเปิดตัวตลอดทั้งปี

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

Android Release Timeline_2.png

เริ่มต้นใช้งาน Android 17

คุณสามารถลงทะเบียนอุปกรณ์ Pixel ที่รองรับเพื่อรับการอัปเดต Android รุ่นเบต้าในอนาคตและรุ่นนี้แบบ Over-the-Air ได้ หากไม่มีอุปกรณ์ Pixel คุณสามารถใช้อิมเมจระบบ 64 บิตกับโปรแกรมจำลองของ Android ใน Android Studio ได้

หากคุณเข้าร่วมโปรแกรม Android รุ่นเบต้าอยู่แล้ว ระบบจะเสนอการอัปเดตเป็นรุ่นเบต้า 2 แบบ Over-the-Air ให้คุณ

หากคุณใช้ Android 26Q1 รุ่นเบต้าและต้องการใช้รุ่นเสถียรขั้นสุดท้ายของ 26Q1 และออกจากรุ่นเบต้า คุณต้องละเว้นการอัปเดตเป็น 26Q2 รุ่นเบต้า 2 แบบ Over-the-Air และรอการเปิดตัว 26Q1

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

เราขอแนะนำให้คุณใช้ Android Studio (Panda) เวอร์ชันล่าสุดสำหรับใช้ดูตัวอย่างเพื่อให้ได้รับประสบการณ์การพัฒนาที่ดีที่สุดกับ Android 17 เมื่อตั้งค่าเรียบร้อยแล้ว สิ่งที่คุณควรทำมีดังนี้

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

เราจะอัปเดตอิมเมจระบบสำหรับใช้ดูตัวอย่าง/รุ่นเบต้าและ SDK เป็นประจำตลอดวงจรการเปิดตัว Android 17 เมื่อติดตั้งบิลด์รุ่นเบต้าแล้ว คุณจะได้รับการอัปเดตในอนาคตโดยอัตโนมัติ

แบบ Over-the-Air สำหรับรุ่นเบต้าและรุ่นสำหรับใช้ดูตัวอย่างทั้งหมดในอนาคต

ดูข้อมูลทั้งหมดได้ที่เว็บไซต์ของนักพัฒนาแอป Android 17

เข้าร่วมการสนทนา

ขณะที่เรากำลังเตรียมความพร้อมสำหรับความเสถียรของแพลตฟอร์ม และเวอร์ชันสำหรับผู้ใช้ทั่วไปของ Android 17 ภายในปีนี้ ความคิดเห็นของคุณยังคงเป็นสิ่งที่มีค่าที่สุดสำหรับเรา ไม่ว่าคุณจะเป็นผู้ใช้รุ่นแรกๆ ในช่อง Canary หรือนักพัฒนาแอปที่ทดสอบในรุ่นเบต้า 2 โปรดเข้าร่วมชุมชนของเราและส่งความคิดเห็น เราพร้อมรับฟัง

เขียนโดย

อ่านต่อ