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

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

ใช้เวลาอ่าน 6 นาที
Matthew McCullough
รองประธานฝ่ายการจัดการผลิตภัณฑ์ของ Android Developer

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

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

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

บับเบิล

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

Bubbles.gif

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

ฟีเจอร์บับเบิลยังไม่พร้อมใช้งานอย่างเต็มรูปแบบใน Beta 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)

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

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

// 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 จะช่วยให้แอปของคุณระบุตำแหน่งเป้าหมายที่ Chooser ครอบครองหลังจากที่ภาพเคลื่อนไหวและการโหลดข้อมูลเสร็จสมบูรณ์ ซึ่งจะช่วยให้ปรับ UI ได้ดียิ่งขึ้น

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

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

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

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

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

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

การปรับปรุงแพ็กเกจอินเทอร์เน็ต

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

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

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

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

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

ตอนนี้ Android มี Intent การออกอากาศที่เชื่อถือได้ ACTION_TIMEZONE_OFFSET_CHANGED ซึ่งจะทริกเกอร์เมื่อออฟเซ็ตเขตเวลาของระบบมีการเปลี่ยนแปลง เช่น ในช่วงการเปลี่ยนเวลาออมแสง ซึ่งจะช่วยเสริมเจตนาในการออกอากาศที่มีอยู่ 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 ซึ่งขยายการรองรับสคริปต์ อักขระ และบล็อกอิโมจิใหม่ๆ รวมถึงเปิดใช้การจัดรูปแบบโดยตรงของออบเจ็กต์ time

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

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

การเข้าถึงข้อความ 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 ควรเปลี่ยนไปใช้ API ของ SMS Retriever หรือ SMS User Consent เพื่อให้มั่นใจว่าฟังก์ชันการทำงานจะยังคงดำเนินต่อไป

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

เราจะเร่งดำเนินการจากเวอร์ชันเบต้านี้ไปสู่เป้าหมายความเสถียรของแพลตฟอร์มที่กำหนดไว้ในเดือนมีนาคม ในขั้นตอนนี้ เราจะส่งมอบ API ของ SDK/NDK ขั้นสุดท้าย นับจากนั้นเป็นต้นไป แอปของคุณจะกำหนดเป้าหมายเป็น 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 เบต้านี้และในอนาคตผ่านอากาศได้ หากไม่มีอุปกรณ์ Pixel คุณสามารถใช้อิมเมจระบบ 64 บิตกับโปรแกรมจำลองของ Android ใน Android Studio ได้

หากปัจจุบันคุณอยู่ในโปรแกรม Android รุ่นเบต้า ระบบจะเสนอการอัปเดตผ่านอากาศเป็นเบต้า 2

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

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

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

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

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

ผ่านอากาศ (OTA) สำหรับการแสดงตัวอย่างและเวอร์ชันเบต้าในอนาคตทั้งหมด

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

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

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

เขียนโดย

อ่านต่อ