ภาพรวมฟีเจอร์และ API

Android 11 เปิดตัวฟีเจอร์และ API ใหม่ๆ ที่ยอดเยี่ยมสำหรับนักพัฒนาซอฟต์แวร์ ส่วนต่างๆ ด้านล่างจะช่วยให้คุณทราบข้อมูลเกี่ยวกับฟีเจอร์สําหรับแอปและเริ่มต้นใช้งาน API ที่เกี่ยวข้อง

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

ประสบการณ์การใช้งานแบบใหม่

การควบคุมอุปกรณ์

Android 11 มี ControlsProviderService API ใหม่ที่คุณสามารถใช้เพื่อแสดงการควบคุมสำหรับอุปกรณ์ภายนอกที่เชื่อมต่อ การควบคุมเหล่านี้จะปรากฏในส่วนการควบคุมอุปกรณ์ในเมนูพลังงานของ Android ดูข้อมูลเพิ่มเติมได้ที่ควบคุมอุปกรณ์ภายนอก

การควบคุมสื่อ

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

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

โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการควบคุมสื่อ

หน้าจอ

การรองรับการแสดง Waterfall ที่ดียิ่งขึ้น

Android 11 มี API มากมายเพื่อรองรับจอแสดงผล Waterfall ซึ่งจะแสดงรอบขอบของอุปกรณ์ ระบบจะถือว่าจอแสดงผลเหล่านี้เป็นตัวแปรของจอแสดงผลที่มีส่วนเว้าบนจอ ตอนนี้เมธอดที่มีอยู่ DisplayCutout.getSafeInset…() จะแสดงค่าที่ปลอดภัยเพื่อหลีกเลี่ยงพื้นที่โฆษณา Waterfall และส่วนที่ถูกตัดออก หากต้องการแสดงผลเนื้อหาแอปในพื้นที่ Waterfall ให้ทําดังนี้

  • โทรไปที่ DisplayCutout.getWaterfallInsets() เพื่อดูขนาดที่แน่นอนของส่วนแทรก Waterfall

  • ตั้งค่าแอตทริบิวต์เลย์เอาต์หน้าต่าง layoutInDisplayCutoutMode เป็น LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS เพื่ออนุญาตให้หน้าต่างขยายไปยังพื้นที่ส่วนที่ถูกตัดออกและพื้นที่โฆษณาสื่อกลางตามลำดับขั้นที่ขอบทั้งหมดของหน้าจอ คุณต้องตรวจสอบว่าไม่มีเนื้อหาสําคัญอยู่ในส่วนที่ตัดออกหรือพื้นที่โฆษณาสื่อกลางตามลำดับขั้น

เซ็นเซอร์มุมของบานพับและอุปกรณ์แบบพับได้

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

ดูอุปกรณ์แบบพับได้

การสนทนา

การปรับปรุงการสนทนา

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

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

แชทบับเบิล

บับเบิลพร้อมให้นักพัฒนาแอปใช้งานแล้วเพื่อช่วยแสดงการสนทนาในระบบ Bubbles เป็นฟีเจอร์ทดลองใน Android 10 ที่เปิดใช้ผ่านตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์ และใน Android 11 จะไม่มีการดำเนินการดังกล่าวอีกต่อไป

หากแอปกำหนดเป้าหมายเป็น Android 11 (API ระดับ 30) ขึ้นไป การแจ้งเตือนของแอปจะไม่แสดงเป็นบับเบิล เว้นแต่แอปจะเป็นไปตามข้อกำหนดใหม่ของการสนทนา กล่าวโดยละเอียดคือ การแจ้งเตือนต้องเชื่อมโยงกับทางลัด

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

ประสิทธิภาพของลูกโป่งมีการปรับปรุงหลายประการ และผู้ใช้มีความยืดหยุ่นมากขึ้นในการเปิดหรือปิดใช้ลูกโป่งจากแต่ละแอป ส่วนนักพัฒนาแอปที่ใช้การสนับสนุนเวอร์ชันทดลองจะมีการเปลี่ยนแปลงบางอย่างกับ API ใน Android 11 ดังนี้

ตัวบ่งชี้ภาพ 5G

ดูข้อมูลเกี่ยวกับการแสดงสัญญาณบอกสถานะ 5G ในอุปกรณ์ของผู้ใช้ได้ที่แจ้งให้ผู้ใช้ทราบเมื่อมีการใช้งาน 5G

ความเป็นส่วนตัว

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

ความปลอดภัย

ข้อมูลอัปเดตเกี่ยวกับการตรวจสอบสิทธิ์ด้วยข้อมูลไบโอเมตริก

Android 11 มีการปรับปรุงการรับรองข้อมูลไบโอเมตริกหลายอย่างเพื่อช่วยให้คุณควบคุมระดับการรักษาความปลอดภัยให้กับข้อมูลของแอปได้ การเปลี่ยนแปลงเหล่านี้จะปรากฏในไลบรารีไบโอเมตริกของ Jetpack ด้วย

ประเภทการตรวจสอบสิทธิ์

Android 11 เปิดตัวอินเทอร์เฟซ BiometricManager.Authenticators ซึ่งคุณใช้ประกาศประเภทการตรวจสอบสิทธิ์ที่แอปรองรับได้

ระบุว่าใช้การตรวจสอบสิทธิ์ประเภทใด

หลังจากผู้ใช้ตรวจสอบสิทธิ์แล้ว คุณสามารถตรวจสอบว่าผู้ใช้ตรวจสอบสิทธิ์โดยใช้ข้อมูลเข้าสู่ระบบของอุปกรณ์หรือข้อมูลเข้าสู่ระบบไบโอเมตริกโดยเรียกใช้ getAuthenticationType()

การรองรับเพิ่มเติมสำหรับคีย์การตรวจสอบสิทธิ์ต่อการใช้งาน

Android 11 รองรับการตรวจสอบสิทธิ์โดยใช้คีย์การตรวจสอบสิทธิ์ต่อการใช้งานมากขึ้น

วิธีการที่เลิกใช้งานแล้ว

Android 11 จะเลิกใช้งานวิธีการต่อไปนี้

  • เมธอด setDeviceCredentialAllowed()
  • เมธอด setUserAuthenticationValidityDurationSeconds()
  • canAuthenticate() เวอร์ชันที่โอเวอร์โหลดซึ่งไม่ใช้อาร์กิวเมนต์

การแชร์ชุดข้อมูลขนาดใหญ่อย่างปลอดภัย

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

Android 11 อนุญาตให้แคชชุดข้อมูลขนาดใหญ่เหล่านี้ในอุปกรณ์โดยใช้ BLOB ข้อมูลที่แชร์ เพื่อช่วยลดความซ้ำซ้อนของข้อมูลทั้งบนเครือข่ายและดิสก์ ดูข้อมูลเพิ่มเติมเกี่ยวกับการแชร์ชุดข้อมูลได้ที่คู่มือโดยละเอียดเกี่ยวกับการแชร์ชุดข้อมูลขนาดใหญ่

ดำเนินการเข้ารหัสตามไฟล์หลังจากการรีสตาร์ท OTA โดยไม่ใช้ข้อมูลเข้าสู่ระบบของผู้ใช้

หลังจากอุปกรณ์อัปเดต OTA และรีสตาร์ทเสร็จแล้ว คีย์ที่เข้ารหัสข้อมูลเข้าสู่ระบบ (CE) ที่อยู่ในพื้นที่เก็บข้อมูลที่ปกป้องข้อมูลเข้าสู่ระบบจะพร้อมใช้งานสำหรับการดำเนินการการเข้ารหัสตามไฟล์ (FBE) ทันที ซึ่งหมายความว่าหลังจากการอัปเดต OTA แอปจะกลับมาทำงานต่อได้อีกครั้งสำหรับการดำเนินการที่ต้องใช้คีย์ CE ก่อนที่ผู้ใช้จะป้อน PIN, รูปแบบ หรือรหัสผ่าน

ประสิทธิภาพและคุณภาพ

การแก้ไขข้อบกพร่องผ่าน Wi-Fi

Android 11 รองรับการติดตั้งใช้งานและการแก้ไขข้อบกพร่องของแอปแบบไร้สายจากเวิร์กสเตชันผ่าน Android Debug Bridge (adb) ตัวอย่างเช่น คุณสามารถทำให้แอปที่แก้ไขข้อบกพร่องได้ใช้งานได้ในอุปกรณ์ระยะไกลหลายเครื่องโดยไม่ต้องเชื่อมต่ออุปกรณ์ผ่าน USB และไม่ต้องจัดการกับปัญหาการเชื่อมต่อ USB ที่พบได้ทั่วไป เช่น การติดตั้งไดรเวอร์ โปรดดูข้อมูลเพิ่มเติมที่หัวข้อเรียกใช้แอปในอุปกรณ์ฮาร์ดแวร์

การติดตั้ง APK แบบเพิ่มทีละรายการของ ADB

การติดตั้ง APK ขนาดใหญ่ (2 GB ขึ้นไป) ในอุปกรณ์อาจใช้เวลานาน แม้ว่าจะมีการเปลี่ยนแปลงแอปเพียงเล็กน้อยก็ตาม การติดตั้ง APK เพิ่มเติมของ ADB (Android Debug Bridge) จะเร่งกระบวนการนี้โดยการติดตั้ง APK เพียงพอที่จะเปิดแอปขณะสตรีมข้อมูลที่เหลือในเบื้องหลัง adb install จะใช้ฟีเจอร์นี้โดยอัตโนมัติหากอุปกรณ์รองรับและคุณติดตั้ง SDK Platform-Tools เวอร์ชันล่าสุดแล้ว หากไม่รองรับ ระบบจะใช้วิธีการติดตั้งเริ่มต้นโดยอัตโนมัติ

ใช้คำสั่ง adb ต่อไปนี้เพื่อใช้ฟีเจอร์ หากอุปกรณ์ไม่รองรับการติดตั้งแบบเพิ่มทีละรายการ คำสั่งจะดำเนินการไม่สำเร็จและพิมพ์คำอธิบายแบบละเอียด

adb install --incremental

ก่อนเรียกใช้การติดตั้ง APK แบบเพิ่มทีละรายการของ ADB คุณต้องลงชื่อ APK และสร้างไฟล์ APK Signature Scheme v4 ไฟล์ลายเซ็น v4 ต้องอยู่ข้าง APK เพื่อให้ฟีเจอร์นี้ทำงานได้

การตรวจหาข้อผิดพลาดโดยใช้ตัวจัดสรรหน่วยความจำของระบบ

GWP-ASan เป็นฟีเจอร์การจัดสรรหน่วยความจำของระบบซึ่งช่วยค้นหาข้อบกพร่องการใช้งานหลังช่วงใช้ฟรี (Use After Free) และบัฟเฟอร์ล้นฮีป (Heap Buffer Overflow) คุณสามารถเปิดใช้ฟีเจอร์นี้ทั่วโลกหรือสําหรับกระบวนการย่อยที่เฉพาะเจาะจงของแอป ดูข้อมูลเพิ่มเติมได้ที่คู่มือ GWP-Asan

Neural Networks API 1.3

Android 11 ขยายการให้บริการและปรับปรุง Neural Networks (NN) API (NNAPI)

การดำเนินการใหม่

NNAPI 1.3 เปิดตัวโอเปอแรนด์ประเภทใหม่คือ TENSOR_QUANT8_ASYMM_SIGNED เพื่อรองรับรูปแบบการแปลงเชิงปริมาณใหม่ของ TensorFlow Lite

นอกจากนี้ NNAPI 1.3 ยังเปิดตัวการดำเนินการใหม่ต่อไปนี้

  • QUANTIZED_LSTM
  • IF
  • WHILE
  • ELU
  • HARD_SWISH
  • FILL
  • RANK

การควบคุม ML ใหม่

NNAPI 1.3 เปิดตัวการควบคุมใหม่เพื่อช่วยให้แมชชีนเลิร์นนิงทํางานได้อย่างราบรื่น ดังนี้

NDK Thermal API

เมื่ออุปกรณ์ร้อนเกินไป อาจทำให้ CPU และ/หรือ GPU ควบคุมการทำงาน และอาจส่งผลต่อแอปในลักษณะที่คาดไม่ถึง แอปหรือเกมที่มีกราฟิกที่ซับซ้อน การประมวลผลอย่างหนัก หรือกิจกรรมในเครือข่ายอย่างต่อเนื่องมีแนวโน้มที่จะพบปัญหามากกว่า

ใช้ NDK Thermal API ใน Android 11 เพื่อตรวจสอบการเปลี่ยนแปลงอุณหภูมิในอุปกรณ์ จากนั้นดำเนินการเพื่อรักษาระดับการใช้พลังงานให้ต่ำลงและอุณหภูมิของอุปกรณ์ให้เย็นลง API นี้คล้ายกับ Java Thermal API คุณสามารถใช้ API นี้เพื่อรับการแจ้งเตือนเกี่ยวกับการเปลี่ยนแปลงสถานะความร้อน หรือเพื่อสำรวจสถานะปัจจุบันโดยตรง

ข้อความและการป้อนข้อมูล

การเปลี่ยน IME ที่ดีขึ้น

Android 11 เปิดตัว API ใหม่เพื่อปรับปรุงการเปลี่ยนผ่านสำหรับเครื่องมือแก้ไขวิธีการป้อนข้อมูล (IME) เช่น แป้นพิมพ์บนหน้าจอ API เหล่านี้ช่วยให้คุณปรับเนื้อหาของแอปให้สอดคล้องกับลักษณะที่ปรากฏและหายไปของ IME รวมถึงองค์ประกอบอื่นๆ เช่น แถบสถานะและแถบนําทางได้ง่ายขึ้น

หากต้องการแสดง IME ในขณะที่ EditText โฟกัสอยู่ ให้โทรหา view.getInsetsController().show(Type.ime()) (คุณสามารถเรียกใช้เมธอดนี้ในข้อมูลพร็อพเพอร์ตี้ใดก็ได้ในลำดับชั้นเดียวกันกับ EditText ที่โฟกัส ทั้งนี้คุณไม่จำเป็นต้องเรียกใช้ใน EditText โดยเฉพาะ) หากต้องการซ่อน IME ให้เรียกใช้ view.getInsetsController().hide(Type.ime()) คุณสามารถตรวจสอบว่าขณะนี้ IME แสดงอยู่หรือไม่โดยเรียกใช้ view.getRootWindowInsets().isVisible(Type.ime())

หากต้องการซิงค์มุมมองของแอปกับการแสดงและซ่อนตัวของ IME ให้ตั้งค่า Listener ในมุมมองโดยระบุ WindowInsetsAnimation.Callback ให้กับ View.setWindowInsetsAnimationCallback() (คุณสามารถตั้งค่าผู้ฟังนี้ในมุมมองใดก็ได้ โดยไม่จำเป็นต้องเป็น EditText) IME จะเรียกเมธอด onPrepare() ของผู้ฟัง จากนั้นจะเรียก onStart() ในตอนต้นของการเปลี่ยน จากนั้นจะเรียกใช้ onProgress() ในแต่ละขั้นตอนของการเปลี่ยน เมื่อการเปลี่ยนเสร็จแล้ว IME จะเรียกใช้ onEnd() คุณสามารถดูความคืบหน้าของการเปลี่ยนได้ทุกเมื่อโดยเรียกใช้ WindowInsetsAnimation.getFraction()

ดูตัวอย่างวิธีใช้ API เหล่านี้ได้ที่ตัวอย่างโค้ด WindowInsetsAnimation ใหม่

การควบคุมภาพเคลื่อนไหว IME

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

Kotlin

rootView.setOnApplyWindowInsetsListener { rootView, windowInsets ->
    val barsIme = windowInsets.getInsets(Type.systemBars() or Type.ime())
    rootView.setPadding(barsIme.left, barsIme.top, barsIme.right, 
                          barsIme.bottom)

      // We return the new WindowInsets.CONSUMED to stop the insets being
      // dispatched any further into the view hierarchy. This replaces the
      // deprecated WindowInsets.consumeSystemWindowInsets() and related
      // functions.
    WindowInsets.CONSUMED
}

Java

mRoot.setOnApplyWindowInsetsListener(new View.OnApplyWindowInsetsListener() {
   @Override
   public WindowInsets onApplyWindowInsets(View v, WindowInsets insets) {

       Insets barsIME = insets.getInsets(Type.systemBars() | Type.ime());
       mRootView.setPadding(barsIme.left, barsIme.top, barsIme.right,
                             barsIme.bottom);

      // We return the new WindowInsets.CONSUMED to stop the insets being
      // dispatched any further into the view hierarchy. This replaces the
      // deprecated WindowInsets.consumeSystemWindowInsets() and related
      // functions.
       return WindowInsets.CONSUMED;
   }
});

หากต้องการย้าย IME หรือแถบระบบอื่นๆ ให้เรียกใช้เมธอด controlWindowInsetsAnimation() ของตัวควบคุมดังนี้

Kotlin

view.windowInsetsController.controlWindowInsetsAnimation(
       Type.ime(),
       1000,
       LinearInterpolator(),
       cancellationSignal,
       object : WindowInsetsAnimationControlListener() {
           fun onReady(controller: WindowInsetsAnimationController,
                         types: Int) {
               // update IME inset
             controller.setInsetsAndAlpha(Insets.of(0, 0, 0, inset),
                           1f /* alpha */, 0.1 /* fraction progress */)
           }
       }
);

Java

mRoot.getWindowInsetsController().controlWindowInsetsAnimation(
       Type.ime(), 1000, new LinearInterpolator(), cancellationSignal,
       new WindowInsetsAnimationControlListener() {
           @Override
           public void onReady(
                   @NonNull WindowInsetsAnimationController controller,
                   int types
                   ) {
                   // update IME inset
                   controller.setInsetsAndAlpha(Insets.of(0, 0, 0, inset),
                           1f /* alpha */, 0.1 /* fraction progress */);
           }

           @Override
           public void onCancelled() {}
       });

การอัปเดตไลบรารี ICU

Android 11 อัปเดตแพ็กเกจ android.icu ให้ใช้ไลบรารี ICU เวอร์ชัน 66 เมื่อเทียบกับเวอร์ชัน 63 ใน Android 10 ไลบรารีเวอร์ชันใหม่มีข้อมูลภาษา CLDR ที่อัปเดตแล้ว รวมถึงการปรับปรุงการรองรับการทำให้เนื้อหาเป็นสากลใน Android อีกหลายรายการ

การเปลี่ยนแปลงที่สําคัญในไลบรารีเวอร์ชันใหม่มีดังนี้

  • ตอนนี้ API การจัดรูปแบบจํานวนมากรองรับประเภทออบเจ็กต์ผลลัพธ์ใหม่ซึ่งขยายจาก FormattedValue แล้ว
  • LocaleMatcher API ได้รับการปรับปรุงด้วยคลาสบิลเดอร์ การรองรับประเภท java.util.Locale และคลาสผลลัพธ์ที่มีข้อมูลเพิ่มเติมเกี่ยวกับการจับคู่
  • ขณะนี้ระบบรองรับ Unicode 13 แล้ว

สื่อ

การจัดสรรบัฟเฟอร์ MediaCodec

Android 11 มี MediaCodec API ใหม่ที่ช่วยให้แอปควบคุมการจัดสรรบัฟเฟอร์อินพุตและเอาต์พุตได้มากขึ้น ซึ่งจะช่วยให้แอปจัดการหน่วยความจำได้อย่างมีประสิทธิภาพมากขึ้น

ชั้นเรียนใหม่
วิธีใหม่

นอกจากนี้ ลักษณะการทำงานของ 2 เมธอดใน MediaCodec.Callback() ก็มีการเปลี่ยนแปลงดังนี้

onInputBufferAvailable()
หากกําหนดค่าให้ใช้ Block App ควรใช้ MediaCodec.getQueueRequest กับดัชนีแทนการเรียก MediaCodec.getInputBuffer() และ MediaCodec.queueInputBuffer() กับดัชนี โดยแนบ LinearBlock/HardwareBuffer กับช่อง
onOutputBufferAvailable()
แอปอาจใช้ MediaCodec.getOutputFrame() กับดัชนีเพื่อรับออบเจ็กต์ OutputFrame ที่มีข้อมูลเพิ่มเติมและบัฟเฟอร์ LinearBlock/HardwareBuffer แทนการเรียกใช้ MediaCodec.getOutputBuffer() กับดัชนี

การถอดรหัสที่มีเวลาในการตอบสนองต่ำใน MediaCodec

Android 11 เพิ่มประสิทธิภาพ MediaCodec ให้รองรับการถอดรหัสที่มีเวลาในการตอบสนองต่ำสำหรับเกมและแอปอื่นๆ แบบเรียลไทม์ คุณสามารถตรวจสอบว่าตัวแปลงรหัสรองรับการถอดรหัสที่มีเวลาในการตอบสนองต่ำหรือไม่โดยการส่ง FEATURE_LowLatency ไปที่ MediaCodecInfo.CodecCapabilities.isFeatureSupported()

หากต้องการเปิดหรือปิดการถอดรหัสที่มีเวลาในการตอบสนองต่ำ ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้

ฟังก์ชัน AAudio ใหม่ AAudioStream_release()

โดยฟังก์ชัน AAudioStream_close() จะปล่อยและปิดสตรีมเสียงพร้อมกัน ซึ่งอาจเป็นอันตราย หากมีกระบวนการอื่นพยายามเข้าถึงสตรีมหลังจากปิดแล้ว กระบวนการดังกล่าวจะขัดข้อง

ฟังก์ชันใหม่ AAudioStream_release() จะปล่อยสตรีมแต่ไม่ปิด ซึ่งจะเพิ่มพื้นที่ว่างในทรัพยากรและทำให้สตรีมอยู่ในสถานะที่ทราบ ออบเจ็กต์จะยังคงอยู่จนกว่าคุณจะเรียกใช้ AAudioStream_close()

MediaParser API

MediaParser เป็น API ใหม่ระดับต่ำสำหรับการแยกสื่อ โดยมีความยืดหยุ่นมากกว่า MediaExtractor และมอบการควบคุมเพิ่มเติมเกี่ยวกับฟังก์ชันการแยกสื่อ

การบันทึกเสียงจากอุปกรณ์ USB

เมื่อแอปพลิเคชันที่ไม่มีสิทธิ์เข้าถึง RECORD_AUDIO ใช้ UsbManager เพื่อขอสิทธิ์เข้าถึงอุปกรณ์เสียง USB ที่มีความสามารถในการบันทึกเสียง (เช่น ชุดหูฟัง USB) โดยตรง ข้อความเตือนใหม่จะปรากฏขึ้นเพื่อขอให้ผู้ใช้ยืนยันสิทธิ์ในการใช้อุปกรณ์ ระบบจะไม่สนใจตัวเลือก "ใช้เสมอ" ดังนั้นผู้ใช้ต้องยอมรับคำเตือนและมอบสิทธิ์ทุกครั้งที่แอปขอสิทธิ์เข้าถึง

แอปควรขอสิทธิ์ RECORD_AUDIO เพื่อหลีกเลี่ยงลักษณะการทำงานนี้

การเข้าถึงไมค์พร้อมกัน

Android 11 เพิ่มเมธอดใหม่ใน AudioRecord, MediaRecorder และ AAudioStream API วิธีการเหล่านี้จะเปิดและปิดใช้ความสามารถในการบันทึกพร้อมกันไม่ว่าจะเลือก Use Case ใดก็ตาม โปรดดูการแชร์อินพุตเสียง

ตัวสลับเอาต์พุต

Android 11 ใช้ลักษณะการทำงานแบบใหม่สำหรับแอปที่ใช้ API ของแคสต์และ MediaRouter

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

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

การเพิ่มประสิทธิภาพ Passpoint ของ Wi-Fi

ดูข้อมูลเกี่ยวกับความสามารถของ Passpoint ที่เพิ่มเข้ามาใน Android 11 ได้ที่ Passpoint

ขยายคำแนะนำ Wi-Fi แล้ว

Android 11 ขยายความสามารถของ Wi-Fi Suggestion API เพื่อเพิ่มความสามารถในการจัดการเครือข่ายของแอป ซึ่งรวมถึงความสามารถต่อไปนี้

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

การอัปเดต CallScreeningService

ตั้งแต่ Android 11 เป็นต้นไป CallScreeningService จะขอข้อมูลเกี่ยวกับสถานะการยืนยัน STIR/SHAKEN (verstat) สำหรับสายเรียกเข้าได้ ข้อมูลนี้ให้ไว้เป็นส่วนหนึ่งของรายละเอียดการโทรสำหรับสายเรียกเข้า

หาก CallScreeningService มีสิทธิ์ READ_CONTACTS แอปจะได้รับการแจ้งเตือนเมื่อมีสายเรียกเข้าหรือโทรออกไปยังหมายเลขในรายชื่อติดต่อของผู้ใช้

ดูข้อมูลเพิ่มเติมได้ที่ป้องกันการหลอกใช้หมายเลขโทรเข้า

การอัปเดต Open Mobile API

ดูข้อมูลเกี่ยวกับการรองรับ OMAPI ใน Android 11 ขึ้นไปได้ที่การรองรับโปรแกรมอ่าน Open Mobile API

VPN ที่มีประสิทธิภาพ

แอปที่กำหนดเป้าหมายเป็น API ระดับ 30 ขึ้นไปหรือที่ทำงานในอุปกรณ์ที่เปิดตัวใน API ระดับ 29 ขึ้นไปสามารถใช้ IKEv2/IPsec กับ VPN ได้ทั้ง VPN ที่ผู้ใช้กำหนดค่าและ VPN ที่อิงตามแอป

VPN จะทำงานในระบบปฏิบัติการโดยตรง ซึ่งทำให้โค้ดที่จำเป็นต่อการสร้างการเชื่อมต่อ IKEv2/IPsec VPN ในแอปมีความซับซ้อนน้อยลง

การควบคุมการเข้าถึงเครือข่ายตามกระบวนการ

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

อนุญาตให้มีการกำหนดค่า Passpoint ที่ติดตั้งไว้หลายรายการที่มี FQDN เดียวกัน

ตั้งแต่ Android 11 เป็นต้นไป คุณสามารถใช้ PasspointConfiguration.getUniqueId() เพื่อรับตัวระบุที่ไม่ซ้ำกันสำหรับออบเจ็กต์ PasspointConfiguration ซึ่งจะช่วยให้ผู้ใช้แอปติดตั้งโปรไฟล์หลายรายการที่มีชื่อโดเมนที่สมบูรณ์ในตัวเอง (FQDN) เดียวกันได้

ฟังก์ชันการทำงานนี้มีประโยชน์เมื่อผู้ให้บริการใช้รหัสประเทศของอุปกรณ์เคลื่อนที่ (MCC) และรหัสเครือข่ายมือถือ (MNC) มากกว่า 1 รายการในเครือข่าย แต่มี FQDN เพียงรายการเดียว ใน Android 11 ขึ้นไป คุณอาจติดตั้งโปรไฟล์ที่มี FQDN มากกว่า 1 โปรไฟล์ซึ่งจะตรงกับเครือข่ายเป็นผู้ให้บริการหน้าแรกเมื่อผู้ใช้ติดตั้งซิมกับ MCC หรือ MNC

การรองรับเสาอากาศ GNSS

Android 11 เปิดตัวคลาส GnssAntennaInfo ซึ่งช่วยให้แอปของคุณใช้ประโยชน์จากการระบุตำแหน่งที่มีความแม่นยำระดับเซนติเมตรได้มากขึ้น ซึ่งระบบดาวเทียมนำทางทั่วโลก (GNSS) มอบให้ได้

ดูข้อมูลเพิ่มเติมในคู่มือข้อมูลการปรับเทียบเสาอากาศ

กราฟิก

ตัวถอดรหัสรูปภาพ NDK

NDK ImageDecoder API มี API มาตรฐานสำหรับแอป Android C/C++ เพื่อถอดรหัสรูปภาพโดยตรง นักพัฒนาแอปไม่จําเป็นต้องใช้ API ของเฟรมเวิร์ก (ผ่าน JNI) หรือรวมไลบรารีการถอดรหัสรูปภาพของบุคคลที่สามอีกต่อไป ดูข้อมูลเพิ่มเติมได้ที่คู่มือนักพัฒนาซอฟต์แวร์โปรแกรมถอดรหัสรูปภาพ

API อัตราเฟรม

Android 11 มี API ที่อนุญาตให้แอปแจ้งระบบเกี่ยวกับอัตราเฟรมที่ต้องการเพื่อลดปัญหาในอุปกรณ์ที่รองรับอัตราการรีเฟรชหลายอัตรา ดูข้อมูลเกี่ยวกับวิธีใช้ API นี้ได้จากคู่มืออัตราเฟรม

การขอและตรวจสอบการสนับสนุนเวลาในการตอบสนองต่ำ

จอแสดงผลบางรุ่นสามารถประมวลผลกราฟิกหลังการประมวลผลได้ เช่น จอแสดงผลภายนอกและทีวีบางรุ่น การประมวลผลภายหลังนี้จะช่วยปรับปรุงกราฟิก แต่อาจเพิ่มเวลาในการตอบสนองได้ จอแสดงผลรุ่นที่ใหม่กว่าซึ่งรองรับ HDMI 2.1 จะมีโหมดเวลาในการตอบสนองต่ำอัตโนมัติ (ALLM หรือเรียกอีกอย่างว่าโหมดเกม) ซึ่งจะช่วยลดเวลาในการตอบสนองด้วยการปิดการประมวลผลหลังนี้ สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ ALLM โปรดดู ข้อมูลจำเพาะของ HDMI 2.1

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

หากต้องการเปิดหรือปิดการประมวลผลหลังการประมวลผลขั้นต่ำ ให้เรียกใช้ Window.setPreferMinimalPostProcessing() หรือตั้งค่าแอตทริบิวต์ preferMinimalPostProcessing ของหน้าต่างเป็น true จอแสดงผลบางรุ่นไม่รองรับการประมวลผลภาพหลังการประมวลผลขั้นต่ำ หากต้องการดูว่าจอแสดงผลหนึ่งๆ รองรับหรือไม่ ให้เรียกใช้เมธอดใหม่ Display.isMinimalPostProcessingSupported()

การแทรกเลเยอร์การแก้ไขข้อบกพร่องกราฟิกประสิทธิภาพสูง

ตอนนี้แอปพลิเคชันสามารถโหลดเลเยอร์กราฟิกภายนอก (GLES, Vulkan) ลงในโค้ดแอปพลิเคชันเนทีฟเพื่อแสดงฟังก์ชันการทำงานแบบเดียวกับแอปที่แก้ไขข้อบกพร่องได้ โดยไม่ต้องเสียค่าใช้จ่ายเพิ่มเติมด้านประสิทธิภาพ ฟีเจอร์นี้มีความสำคัญอย่างยิ่งเมื่อคุณทำโปรไฟล์แอปพลิเคชันด้วยเครื่องมืออย่าง GAPID หากต้องการโปรไฟล์แอป ให้ใส่องค์ประกอบข้อมูลเมตาต่อไปนี้ในไฟล์ Manifest ของแอปแทนที่จะทำให้แอปพลิเคชันแก้ไขข้อบกพร่องได้

<application ... >
    <meta-data android:name="com.android.graphics.injectLayers.enable"
                  android:value="true" />
</application>

รูปภาพและกล้อง

ปิดเสียงและการสั่นของการแจ้งเตือนระหว่างการจับภาพ

ตั้งแต่ Android 11 เป็นต้นไป เมื่อใช้กล้องอยู่ แอปจะปิดเสียงได้เฉพาะการสั่น ปิดทั้งเสียงและการสั่น หรือปิดทั้งเสียงและการสั่นไม่ได้ โดยใช้setCameraAudioRestriction()

การรองรับกล้องที่ขยายการให้บริการในโปรแกรมจำลอง Android

ดูข้อมูลเกี่ยวกับการรองรับกล้องที่เพิ่มขึ้นในโปรแกรมจำลองตั้งแต่ Android 11 ได้ที่การรองรับกล้อง

รองรับการใช้งานกล้องมากกว่า 1 ตัวพร้อมกัน

Android 11 เพิ่ม API เพื่อสอบถามการรองรับการใช้กล้องมากกว่า 1 ตัวพร้อมกัน ซึ่งรวมถึงทั้งกล้องหน้าและกล้องหลัง

หากต้องการตรวจสอบการรองรับบนอุปกรณ์ที่แอปทำงานอยู่ ให้ใช้วิธีการต่อไปนี้

  • getConcurrentCameraIds() แสดงผล Set ของรหัสกล้องแบบผสมที่สามารถสตรีมพร้อมกันกับชุดค่าผสมของสตรีมที่รับประกันการแสดงผลเมื่อกำหนดค่าโดยกระบวนการแอปพลิเคชันเดียวกัน
  • isConcurrentSessionConfigurationSupported() สอบถามว่าอุปกรณ์กล้องรองรับการกำหนดค่าเซสชันที่เกี่ยวข้องพร้อมกันได้หรือไม่

รองรับรูปภาพ HEIF ที่มีหลายเฟรมได้ดียิ่งขึ้น

ตั้งแต่ Android 11 เป็นต้นไป หากคุณเรียกใช้ ImageDecoder.decodeDrawable() และส่งรูปภาพ HEIF ที่มีลำดับเฟรม (เช่น ภาพเคลื่อนไหวหรือภาพต่อเนื่อง) วิธีการจะแสดงผล AnimatedImageDrawable ที่มีลำดับรูปภาพทั้งหมด ใน Android เวอร์ชันเก่า วิธีการนี้จะแสดงผล BitmapDrawable เพียงเฟรมเดียว

หากกราฟิก HEIF มีเฟรมหลายเฟรมที่ไม่ได้อยู่ในลําดับ คุณจะเรียกข้อมูลเฟรมแต่ละเฟรมได้โดยเรียกใช้ MediaMetadataRetriever.getImageAtIndex()

การช่วยเหลือพิเศษ

ข้อมูลอัปเดตสำหรับนักพัฒนาบริการการช่วยเหลือพิเศษ

หากสร้างบริการการช่วยเหลือพิเศษที่กำหนดเอง คุณจะใช้ฟีเจอร์ต่อไปนี้ใน Android 11 ได้

  • ตอนนี้คำอธิบายบริการการช่วยเหลือพิเศษที่แสดงต่อผู้ใช้อนุญาตให้ใช้ HTML และรูปภาพได้นอกเหนือจากข้อความธรรมดา ความยืดหยุ่นนี้ทำให้ง่ายต่อการอธิบายให้ผู้ใช้ปลายทางทราบว่าบริการของคุณทำอะไรได้บ้างและจะช่วยพวกเขาได้อย่างไร
  • หากต้องการใช้คำอธิบายสถานะขององค์ประกอบ UI ที่สื่อความหมายมากกว่า contentDescription ให้เรียกใช้เมธอด getStateDescription()
  • หากต้องการขอให้เหตุการณ์การแตะข้ามเครื่องมือสำรวจการแตะของระบบ ให้เรียกใช้ setTouchExplorationPassthroughRegion() ในทำนองเดียวกัน หากต้องการให้ระบบข้ามการตรวจจับท่าทางสัมผัส ให้เรียกใช้ setGestureDetectionPassthroughRegion()
  • คุณสามารถขอการดำเนินการ IME เช่น "enter" และ "next" รวมถึงภาพหน้าจอของหน้าต่างที่ไม่ได้เปิดใช้ Flag FLAG_SECURE

ฟีเจอร์เพิ่มเติม

เหตุผลที่ออกจากกระบวนการของแอป

Android 11 เปิดตัววิธี ActivityManager.getHistoricalProcessExitReasons() ซึ่งจะรายงานสาเหตุของการสิ้นสุดกระบวนการล่าสุด แอปสามารถใช้วิธีนี้เพื่อรวบรวมข้อมูลการวินิจฉัยข้อขัดข้อง เช่น ทราบว่าการสิ้นสุดกระบวนการเกิดจาก ANR, ปัญหาหน่วยความจำ หรือสาเหตุอื่นๆ หรือไม่ นอกจากนี้ คุณยังใช้เมธอด setProcessStateSummary() ใหม่เพื่อจัดเก็บข้อมูลสถานะที่กําหนดเองสําหรับการวิเคราะห์ในภายหลังได้ด้วย

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

แหล่งข้อมูลเพิ่มเติม

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

ตัวโหลดทรัพยากร

Android 11 เปิดตัว API ใหม่ที่ช่วยให้แอปขยายวิธีค้นหาและโหลดทรัพยากรแบบไดนามิกได้ คลาส API ใหม่ ResourcesLoader และ ResourcesProvider มีหน้าที่หลักในการจัดหาฟังก์ชันใหม่ เครื่องมือเหล่านี้ช่วยให้คุณระบุแหล่งข้อมูลและชิ้นงานเพิ่มเติม หรือแก้ไขค่าของแหล่งข้อมูลและชิ้นงานที่มีอยู่ได้

ออบเจ็กต์ ResourcesLoader คือคอนเทนเนอร์ที่จัดหาออบเจ็กต์ ResourcesProvider ให้กับอินสแตนซ์ Resources ของแอป ออบเจ็กต์ ResourcesProvider ก็มีวิธีการโหลดข้อมูลทรัพยากรจาก APK และตารางทรัพยากร

Use Case หลักอย่างหนึ่งของ API นี้คือการโหลดชิ้นงานที่กำหนดเอง คุณสามารถใช้ loadFromDirectory() เพื่อสร้าง ResourcesProvider ที่เปลี่ยนเส้นทางการแก้ไขทรัพยากรและชิ้นงานตามไฟล์ ซึ่งจะทำให้ระบบค้นหาไดเรกทอรีที่เฉพาะเจาะจงแทน APK ของแอปพลิเคชัน คุณสามารถเข้าถึงเนื้อหาเหล่านี้ผ่านกลุ่มเมธอด open() จากคลาส API AssetManager เช่นเดียวกับเนื้อหาที่รวมอยู่ใน APK

APK Signature Scheme v4

Android 11 รองรับ APK Signature Scheme v4 รูปแบบนี้จะสร้างลายเซ็นประเภทใหม่ในไฟล์แยกต่างหาก (apk-name.apk.idsig) แต่โดยรวมแล้วจะคล้ายกับ v2 และ v3 ระบบจะไม่เปลี่ยนแปลง APK รูปแบบนี้รองรับการติดตั้ง APK ที่เพิ่มขึ้นของ ADB ซึ่งช่วยให้ติดตั้ง APK ได้เร็วขึ้น

ตัวกรอง Intent แบบไดนามิก

หากต้องการรับ Intent แอปต้องประกาศประเภทข้อมูลที่จะรับได้เมื่อคอมไพล์ โดยกำหนดตัวกรอง Intent ในไฟล์ Manifest ของแอป ใน Android 10 และต่ำกว่า แอปไม่มีวิธีเปลี่ยนตัวกรอง Intent ขณะรันไทม์ ซึ่งเป็นปัญหาสำหรับแอประบบเสมือนจริง (เช่น เครื่องเสมือนจริงและเดสก์ท็อประยะไกล) เพราะไม่มีทางทราบได้อย่างแน่ชัดว่าผู้ใช้จะติดตั้งซอฟต์แวร์ใดลงในแอป

Android 11 เปิดตัวกลุ่ม MIME ซึ่งเป็นองค์ประกอบใหม่ของไฟล์ Manifest ที่ช่วยให้แอปประกาศชุดประเภท MIME แบบไดนามิกในตัวกรอง Intent และแก้ไขแบบเป็นโปรแกรมขณะรันไทม์ได้ หากต้องการใช้กลุ่ม MIME ให้ใส่องค์ประกอบข้อมูลในไฟล์ Manifest ของแอปโดยใช้แอตทริบิวต์ android:mimeGroup ใหม่ ดังนี้

<intent-filter>
  <action android:name="android.intent.action.SEND"/>
  <category android:name="android.intent.category.DEFAULT"/>
  <data android:mimeGroup="myMimeGroup"/>
</intent-filter>

ค่าของแอตทริบิวต์ android:mimeGroup คือรหัสสตริงที่กำหนดเองซึ่งระบุกลุ่ม MIME ขณะรันไทม์ คุณสามารถเข้าถึงและอัปเดตเนื้อหาของกลุ่ม MIME ได้โดยส่งรหัสของกลุ่มไปยังเมธอดใหม่ต่อไปนี้ในคลาส API ของ PackageManager

เมื่อเพิ่มประเภท MIME ไปยังกลุ่ม MIME แบบเป็นโปรแกรม ประเภทดังกล่าวจะทำงานเหมือนกับประเภท MIME แบบคงที่ที่ประกาศไว้อย่างชัดเจนในไฟล์ Manifest

การปรับปรุงการป้อนข้อความอัตโนมัติ

Android 11 มีการปรับปรุงบริการป้อนข้อความอัตโนมัติ

ตัวระบุคำแนะนำใน AssistStructure.ViewNode

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

ชุดข้อมูลแสดงเหตุการณ์

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

การผสานรวม IME

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

การแชร์ข้อมูลกับบริการบันทึกเนื้อหา

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

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