ฟีเจอร์และ API ของ Android 9

Android 9 (API ระดับ 28) เปิดตัวฟีเจอร์และความสามารถใหม่ๆ ที่ยอดเยี่ยมสำหรับ ผู้ใช้และนักพัฒนาซอฟต์แวร์ เอกสารนี้ไฮไลต์สิ่งใหม่ๆ สำหรับนักพัฒนาซอฟต์แวร์

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

จุดยืนภายในอาคารด้วย RTT ของ Wi-Fi

RTT API ใหม่รองรับการจัดตำแหน่งภายในอาคารในแอป

Android 9 เพิ่มการรองรับแพลตฟอร์มสำหรับ IEEE 802.11-2016 Wi-Fi หรือที่เรียกอีกอย่างว่าระยะเวลาเดินทางของ Wi-Fi (RTT) เพื่อให้คุณใช้ประโยชน์ได้ ของตำแหน่งในอาคารในแอปของคุณ

ในอุปกรณ์ที่ใช้ Android 9 ที่รองรับฮาร์ดแวร์ แอปสามารถใช้ RTT API เพื่อวัด ระยะทางไปยังจุดเข้าใช้งาน Wi-Fi (AP) ที่ใช้ RTT ใกล้เคียง อุปกรณ์จะต้องมี บริการตำแหน่งเปิดอยู่และเปิดการสแกนหา Wi-Fi (ภายใต้ การตั้งค่า > ตำแหน่ง) และแอปของคุณต้องมี ACCESS_FINE_LOCATION สิทธิ์ อุปกรณ์ไม่จำเป็นต้องเชื่อมต่อกับจุดเข้าใช้งานเพื่อใช้ RTT เพื่อรักษาความเป็นส่วนตัว จะมีเพียงโทรศัพท์เท่านั้นที่สามารถกำหนดระยะห่างไปยัง จุดเข้าใช้งาน; จุดเข้าใช้งานไม่มีข้อมูลนี้

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

ด้วยความแม่นยำนี้ คุณจะสร้างประสบการณ์ใหม่ๆ ได้ เช่น ระบบนำทางในอาคาร และบริการตามตำแหน่งแบบละเอียด เช่น การควบคุมด้วยเสียงที่มีความชัดเจน (เช่น "เปิดไฟนี้") และข้อมูลที่อิงตามตำแหน่ง (เช่น "ผลิตภัณฑ์นี้มีข้อเสนอพิเศษไหม")

ดู Wi-Fi RTT API ที่ใช้งานอยู่ใน แอปเดโม Android WifiRttScan

สำหรับข้อมูลเพิ่มเติม โปรดดู ตำแหน่งของ Wi-Fi: ครอบคลุม RTT

รองรับหน้าจอรอยบาก

หน้าจอตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์แสดงคัตเอาต์ขนาดต่างๆ

ทดสอบหน้าจอรอยบากโดยใช้โปรแกรมจำลอง

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

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

คุณสามารถจำลองหน้าจอรอยบากในอุปกรณ์หรือโปรแกรมจำลองที่ใช้ Android 9 ดังนี้

  1. เปิดใช้ตัวเลือกสำหรับนักพัฒนาแอป
  2. ในหน้าจอตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์ ให้เลื่อนลงไปที่ส่วนภาพวาด และเลือกจำลองหน้าจอด้วยคัตเอาต์
  3. เลือกขนาดของส่วนที่ถูกตัดออก

การแจ้งเตือน

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

การแจ้งเตือนการรับส่งข้อความ

MessagingStyle พร้อมรูปภาพแนบอยู่

การแจ้งเตือนการรับส่งข้อความ

MessagingStyle ที่มีการตอบกลับและการสนทนา

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

ประสบการณ์การรับส่งข้อความที่ดียิ่งขึ้น

เริ่มตั้งแต่ Android 7.0 (API ระดับ 24) เป็นต้นไป คุณสามารถเพิ่มการดำเนินการเพื่อตอบกลับได้ หรือป้อนข้อความอื่นๆ จากการแจ้งเตือนโดยตรง เพิ่มประสิทธิภาพ Android 9 ฟีเจอร์นี้พร้อมการปรับปรุงดังต่อไปนี้

  • การรองรับผู้เข้าร่วมการสนทนาที่ง่ายขึ้น: Person จะใช้เพื่อระบุบุคคลที่มีส่วนเกี่ยวข้องในการสนทนา ซึ่งรวมถึง อวาตาร์และ URI API อื่นๆ อีกมากมาย เช่น addMessage() ก็ใช้คลาส Person แทน CharSequence ได้แล้ว ชั้นเรียน Person ยังรองรับรูปแบบการออกแบบของเครื่องมือสร้างอีกด้วย

  • รองรับรูปภาพ: Android 9 แสดงรูปภาพในการแจ้งเตือนการรับส่งข้อความแล้ว ในโทรศัพท์ คุณสามารถใช้ setData() บนข้อความเพื่อแสดงรูปภาพ ข้อมูลโค้ดต่อไปนี้จะแสดงวิธีที่ เพื่อสร้าง Person และข้อความที่มีรูปภาพ

Kotlin

// Create new Person.
val sender = Person()
        .setName(name)
        .setUri(uri)
        .setIcon(null)
        .build()
// Create image message.
val message = Message("Picture", time, sender)
        .setData("image/", imageUri)
val style = Notification.MessagingStyle(getUser())
        .addMessage("Check this out!", 0, sender)
        .addMessage(message)

Java

// Create new Person.
Person sender = new Person()
        .setName(name)
        .setUri(uri)
        .setIcon(null)
        .build();
// Create image message.
Message message = new Message("Picture", time, sender)
        .setData("image/", imageUri);
Notification.MessagingStyle style = new Notification.MessagingStyle(getUser())
        .addMessage("Check this out!", 0, sender)
        .addMessage(message);
  • บันทึกคำตอบเป็นฉบับร่าง: แอปของคุณสามารถเรียกดู EXTRA_REMOTE_INPUT_DRAFT ที่ระบบส่งเมื่อผู้ใช้ปิดการแจ้งเตือนการรับส่งข้อความโดยไม่ตั้งใจ คุณสามารถใช้ส่วนเสริมนี้เพื่อเติมช่องข้อความล่วงหน้าในแอปเพื่อให้ผู้ใช้ เสร็จสิ้นการตอบกลับ

  • ระบุว่าการสนทนาเป็นการสนทนากลุ่มหรือไม่: คุณสามารถใช้ setGroupConversation() เพื่อจงใจระบุการสนทนาว่าเป็นกลุ่มหรือไม่ใช่กลุ่ม

  • ตั้งค่าการทำงานเชิงความหมายสำหรับความตั้งใจ ดังนี้ setSemanticAction() ช่วยให้คุณให้ความหมายแก่การกระทำ เช่น "ทำเครื่องหมายว่าอ่านแล้ว" "ลบ" "ตอบกลับ" เป็นต้น

  • สมาร์ทรีพลาย: Android 9 รองรับการตอบกลับที่แนะนำแบบเดียวกับการตอบกลับที่แนะนำใน สำหรับแอปรับส่งข้อความ ใช้ RemoteInput.setChoices() เพื่อแสดงคำตอบมาตรฐานแบบอาร์เรย์ให้แก่ผู้ใช้

การตั้งค่าช่อง การออกอากาศ และโหมดห้ามรบกวน

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

  • การบล็อก Channel Group: ผู้ใช้สามารถบล็อกกลุ่มช่องทั้งกลุ่มได้แล้ว ในการตั้งค่าการแจ้งเตือนของแอป คุณสามารถใช้ isBlocked() ในการระบุเมื่อกลุ่มถูกบล็อก จึงไม่มีการส่ง การแจ้งเตือนสำหรับช่องในกลุ่มนั้น

    นอกจากนี้ แอปยังค้นหาการตั้งค่า Channel Group ปัจจุบันได้โดยใช้ ใหม่ getNotificationChannelGroup()

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

  • NotificationManager.Policy มีหมวดหมู่ลำดับความสำคัญ "ห้ามรบกวน" ใหม่ 3 หมวดหมู่ ดังนี้

    • PRIORITY_CATEGORY_ALARMS จัดลำดับความสำคัญของการปลุก
    • PRIORITY_CATEGORY_MEDIA จัดลำดับความสำคัญของเสียงจากแหล่งที่มาของสื่อ เช่น สื่อและการนำทางด้วยเสียง
    • PRIORITY_CATEGORY_SYSTEM ให้ความสำคัญกับเสียงของระบบ
  • NotificationManager.Policy ยังมีค่าคงที่โหมดห้ามรบกวนใหม่ 7 รายการจากคุณด้วย สามารถใช้ระงับภาพรบกวนได้ ดังนี้

    • SUPPRESSED_EFFECT_FULL_SCREEN_INTENT จะทำให้การแจ้งเตือนไม่เปิดกิจกรรมแบบเต็มหน้าจอ
    • SUPPRESSED_EFFECT_LIGHTS บล็อกไฟแจ้งเตือน
    • SUPPRESSED_EFFECT_PEEK ป้องกันไม่ให้เลื่อนการแจ้งเตือนมาแสดงเป็นเวลาสั้นๆ ("การแสดงชั่วครู่")
    • SUPPRESSED_EFFECT_STATUS_BAR ป้องกันไม่ให้การแจ้งเตือนปรากฏในแถบสถานะบนอุปกรณ์ที่รองรับแถบสถานะ
    • SUPPRESSED_EFFECT_BADGE บล็อกป้ายในอุปกรณ์ที่รองรับการติดป้าย ดูข้อมูลเพิ่มเติมได้ที่ แก้ไขป้ายการแจ้งเตือน
    • SUPPRESSED_EFFECT_AMBIENT บล็อกการแจ้งเตือนในอุปกรณ์ที่รองรับหน้าจอแอมเบียนท์
    • SUPPRESSED_EFFECT_NOTIFICATION_LIST ป้องกันไม่ให้การแจ้งเตือนปรากฏในมุมมองรายการบนอุปกรณ์ที่รองรับมุมมองรายการ เช่น หน้าต่างแจ้งเตือนหรือหน้าจอล็อก

การรองรับกล้องหลายตัวและการอัปเดตกล้อง

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

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

ใน Android 9 กล้องหลายตัว API รองรับกล้องโมโนโครมสำหรับอุปกรณ์ที่มี FULL หรือ ความสามารถ LIMITED เอาต์พุตแบบโมโนโครมจะทำผ่าน YUV_420_888 ที่มี Y เป็นโทนสีเทา U (Cb) เป็น 128 และ V (Cr) เป็น 128

Android 9 ยังรองรับ USB/UVC ภายนอกด้วย กล้องเปิดอยู่ อุปกรณ์ที่รองรับ

ImageDecoder สำหรับโฆษณาที่ถอนออกได้และบิตแมป

Android 9 เปิดตัว ImageDecoder ซึ่งมีวิธีการถอดรหัสรูปภาพที่ทันสมัย ใช้ชั้นเรียนนี้ แทน BitmapFactory และ BitmapFactory.Options API

ImageDecoder ให้คุณสร้าง Drawable หรือ Bitmap จากไบต์บัฟเฟอร์ ไฟล์ หรือ URI หากต้องการถอดรหัสรูปภาพ ให้เรียกใช้ก่อน createSource() พร้อมแหล่งที่มาของรูปภาพที่เข้ารหัส จากนั้นโทร decodeDrawable() หรือ decodeBitmap() โดยส่ง ImageDecoder.Source เพื่อสร้าง Drawable หรือ Bitmap หากต้องการเปลี่ยน การตั้งค่าเริ่มต้น ส่ง OnHeaderDecodedListener ไปที่ decodeDrawable() หรือ decodeBitmap() โทร ImageDecoder ครั้ง onHeaderDecoded() ด้วยความกว้างและความสูงเริ่มต้นของภาพ เมื่อทราบค่าแล้ว หากรูปภาพที่เข้ารหัสเป็น GIF แบบเคลื่อนไหวหรือ WebP แล้ว decodeDrawable() จะแสดงผล Drawable ที่เป็นอินสแตนซ์ของ AnimatedImageDrawable

คุณใช้วิธีต่างๆ ในการตั้งค่าคุณสมบัติของรูปภาพได้ ดังนี้

  • หากต้องการปรับขนาดรูปภาพที่ถอดรหัสให้มีขนาดที่แน่นอน ให้ส่งขนาดเป้าหมายไปยัง setTargetSize() นอกจากนี้ คุณยังปรับขนาดรูปภาพโดยใช้ขนาดตัวอย่างได้อีกด้วย ส่งขนาดตัวอย่างไปยัง setTargetSampleSize()
  • หากต้องการครอบตัดรูปภาพภายในช่วงของรูปภาพที่ปรับขนาดแล้ว ให้เรียกใช้ setCrop()
  • หากต้องการสร้างบิตแมปที่เปลี่ยนแปลงได้ ให้ส่ง true ไปยัง setMutableRequired()

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

แอนิเมชัน

Android 9 เปิดตัว AnimatedImageDrawable สำหรับการวาดภาพและแสดงภาพเคลื่อนไหว GIF และ WebP AnimatedImageDrawable ทำงานคล้ายกับ AnimatedVectorDrawable ว่าชุดข้อความแสดงผลขับเคลื่อนภาพเคลื่อนไหวของ AnimatedImageDrawable นอกจากนี้ เทรดการแสดงผลยังใช้เทรดผู้ปฏิบัติงานในการถอดรหัสเพื่อไม่ให้การถอดรหัส รบกวนการดำเนินการอื่นๆ ในเธรดการแสดงผล การติดตั้งใช้งานนี้ แอปของคุณให้แสดงภาพเคลื่อนไหวโดยไม่ต้องจัดการการอัปเดต หรือ การรบกวนเหตุการณ์อื่นๆ ในชุดข้อความ UI ของแอป

AnimatedImageDrawable สามารถถอดรหัสได้โดยใช้อินสแตนซ์ของ ImageDecoder ดังต่อไปนี้ ข้อมูลโค้ดจะแสดงวิธีใช้ ImageDecoder เพื่อถอดรหัส AnimatedImageDrawable:

Kotlin

@Throws(IOException::class)
private fun decodeImage() {
    val decodedAnimation = ImageDecoder.decodeDrawable(
        ImageDecoder.createSource(resources, R.drawable.my_drawable))

    // Prior to start(), the first frame is displayed.
    (decodedAnimation as? AnimatedImageDrawable)?.start()
}

Java

private void decodeImage() throws IOException {
    Drawable decodedAnimation = ImageDecoder.decodeDrawable(
        ImageDecoder.createSource(getResources(), R.drawable.my_drawable));

    if (decodedAnimation instanceof AnimatedImageDrawable) {
        // Prior to start(), the first frame is displayed.
        ((AnimatedImageDrawable) decodedAnimation).start();
    }
}

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

วิดีโอ HDR VP9, การบีบอัดรูปภาพ HEIF และ API ของสื่อ

Android 9 มีการรองรับในตัวสำหรับ High Dynamic Range (HDR) VP9 โปรไฟล์ 2 เพื่อให้คุณส่งภาพยนตร์ที่เปิดใช้ HDR ไปยังผู้ใช้ของคุณจาก YouTube, Play Movies ได้ และแหล่งที่มาอื่นๆ บนอุปกรณ์ที่รองรับ HDR

Android 9 ยังเพิ่มการรองรับการเข้ารหัสรูปภาพโดยใช้รูปภาพที่มีประสิทธิภาพสูง รูปแบบไฟล์ (HEIF หรือ HEIC) ซึ่งปรับปรุงการบีบอัดและลดพื้นที่เก็บข้อมูลและข้อมูลเครือข่าย ระบบรองรับตัวอย่างภาพนิ่ง HEIF ใน MediaMuxer และ MediaExtractor ใหม่ ด้วยการสนับสนุนแพลตฟอร์มบนอุปกรณ์ Android 9 จึงสามารถส่งและ ใช้อิมเมจ HEIF จากเซิร์ฟเวอร์แบ็กเอนด์ของคุณ หลังจากตรวจสอบแล้วว่า แอปเข้ากันได้กับรูปแบบข้อมูลนี้สำหรับการแชร์และแสดงผล ลองใช้ HEIF เป็นรูปแบบพื้นที่เก็บข้อมูลรูปภาพในแอปของคุณ คุณสามารถแปลง jpeg เป็น heic โดยใช้ ImageDecoder หรือ BitmapFactory (ซึ่งได้รับ บิตแมปจากไฟล์ JPEG) จากนั้นคุณสามารถใช้ HeifWriter เพื่อเขียน HEIF ภาพนิ่งจากบัฟเฟอร์ไบต์ YUV หรืออินสแตนซ์ของ Surface หรือ Bitmap

คุณสามารถดูเมตริกสื่อได้จาก AudioTrack AudioRecord และ MediaDrm ชั้นเรียน

Android 9 แนะนำเมธอดสำหรับ MediaDRM คลาสสำหรับรับเมตริก, HDCP ระดับ การรักษาความปลอดภัย และจำนวนเซสชัน และเพื่อเพิ่มการควบคุม และการรักษาความปลอดภัย ดูความแตกต่างของ API เพื่อดูรายละเอียด

ใน Android 9 AAudio API จะเพิ่ม รองรับแอตทริบิวต์ AAudioStream เพิ่มเติมหลายอย่าง รวมถึงการใช้งานและเนื้อหา ประเภท และอินพุตที่กำหนดล่วงหน้า เมื่อใช้แอตทริบิวต์เหล่านี้ คุณจะสร้างสตรีมที่ สำหรับแอปพลิเคชัน VoIP หรือกล้องวิดีโอ นอกจากนี้คุณยังตั้งรหัสเซสชันเป็น เชื่อมโยงสตรีม AAudio กับรีมิกซ์ที่ใช้เอฟเฟกต์ได้ ใช้เมนู AudioEffect API ในการควบคุม เอฟเฟกต์

Android 9 เปิดตัว AudioEffect API สำหรับ การประมวลผลแบบไดนามิก ในชั้นเรียนนี้ คุณจะสามารถสร้างเอฟเฟกต์เสียงตามช่อง เช่น การปรับความถี่เสียงให้เหมาะสม การบีบอัดหลายย่านความถี่ และตัวจำกัดในหลายระดับ สามารถกำหนดค่าย่านความถี่และระยะแอ็กทีฟได้ และพารามิเตอร์ส่วนใหญ่สามารถ ควบคุมแบบเรียลไทม์

ความละเอียดอ่อนของต้นทุนข้อมูลใน JobScheduler

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

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

เมื่อเพิ่มงาน ให้ใช้ setEstimatedNetworkBytes() setPrefetch() และ setRequiredNetwork() ตามความเหมาะสมเพื่อช่วย JobScheduler จะจัดการงานได้อย่างถูกต้อง เมื่องานของคุณเสร็จสิ้น ให้ใช้ออบเจ็กต์ Network ส่งคืนโดย JobParameters.getNetwork() มิฉะนั้นคุณจะใช้เครือข่ายเริ่มต้นของอุปกรณ์โดยปริยาย อาจไม่เป็นไปตามข้อกำหนดของคุณ ซึ่งทำให้เกิดการใช้ข้อมูลโดยไม่ได้ตั้งใจ

API เครือข่ายระบบประสาท 1.1

เปิดตัว Neural Networks API ใน Android 8.1 (API ระดับ 27) เพื่อเร่งการทำงานแมชชีนเลิร์นนิงในอุปกรณ์ Android Android 9 ขยายและปรับปรุง API โดยการเพิ่ม สนับสนุนการดำเนินการใหม่ 9 รายการ ได้แก่

ปัญหาที่ทราบแล้ว: เมื่อผ่าน ANEURALNETWORKS_TENSOR_QUANT8_ASYMM Tensor ไปยัง ANEURALNETWORKS_PAD ซึ่งพร้อมใช้งานใน Android 9 ขึ้นไป เอาต์พุตจาก NNAPI อาจไม่ตรงกับผลลัพธ์จากเครื่องในระดับที่สูงกว่า กรอบการเรียนรู้ เช่น TensorFlow Lite คุณ ควรที่จะผ่านเท่านั้น ANEURALNETWORKS_TENSOR_FLOAT32 จนกว่าปัญหาจะได้รับการแก้ไข

นอกจากนี้ API ยังมีฟังก์ชันใหม่ ANeuralNetworksModel_relaxComputationFloat32toFloat16() ซึ่งให้คุณระบุได้ว่าจะคำนวณ ANEURALNETWORKS_TENSOR_FLOAT32 มีช่วงและความแม่นยำต่ำเท่ากับจุดลอยตัว 16 บิต IEEE 754

เฟรมเวิร์กการป้อนข้อความอัตโนมัติ

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

การเพิ่มประสิทธิภาพด้านการรักษาความปลอดภัย

Android 9 นำเสนอคุณลักษณะด้านความปลอดภัยมากมาย ส่วนต่อไปนี้จะสรุป

Android Protected Confirmation

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

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

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

ดูคำแนะนำในการเพิ่มการรองรับการยืนยันที่มีการป้องกันของ Android ได้ที่ ป้องกัน Android การยืนยัน

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

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

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

โมดูลความปลอดภัยฮาร์ดแวร์

อุปกรณ์ที่รองรับซึ่งใช้ Android 9 ขึ้นไปติดตั้งอยู่สามารถ มี StrongBox Keymaster ซึ่งเป็นการใช้งาน Keymaster HAL ที่ จะอยู่ในโมดูลความปลอดภัยฮาร์ดแวร์ โมดูลประกอบด้วยสิ่งต่อไปนี้

  • CPU ของตัวเอง
  • พื้นที่เก็บข้อมูลที่ปลอดภัย
  • ตัวสร้างหมายเลขสุ่มตัวจริง
  • กลไกเพิ่มเติมในการป้องกันการงัดแงะแพ็กเกจและไซด์โหลดโดยไม่ได้รับอนุญาต ของแอป

เมื่อตรวจสอบคีย์ที่จัดเก็บไว้ใน StrongBox Keymaster ระบบจะยืนยัน ความสมบูรณ์ของคีย์กับสภาพแวดล้อมการดำเนินการที่เชื่อถือได้ (TEE)

ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ Strongbox Keymaster ได้ที่หัวข้อความปลอดภัยของฮาร์ดแวร์ โมดูล

การนำเข้าคีย์ที่ปลอดภัยไปยังคีย์สโตร์

Android 9 มีการรักษาความปลอดภัยการถอดรหัสคีย์เพิ่มเติมโดยการเพิ่ม ความสามารถในการนำเข้าคีย์ที่เข้ารหัสอย่างปลอดภัยไปยัง Keystore โดยใช้ รูปแบบคีย์ที่เข้ารหัส ASN.1 จากนั้น Keymaster จะถอดรหัสคีย์ใน คีย์สโตร์ ดังนั้นเนื้อหาของคีย์จะไม่ปรากฏเป็นข้อความธรรมดาในหน่วยความจำของโฮสต์ของอุปกรณ์

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีนําเข้าคีย์ที่เข้ารหัสเพิ่มเติม ได้อย่างปลอดภัย

รูปแบบลายเซ็น APK ที่มีการหมุนเวียนคีย์

Android 9 เพิ่มการรองรับ APK Signature Scheme v3 รูปแบบนี้มีตัวเลือก ใส่บันทึกหลักฐานแสดงการหมุนเวียนคีย์ในช่องลงชื่อสำหรับการลงชื่อแต่ละครั้ง ใบรับรอง ความสามารถนี้ช่วยให้แอปลงนามด้วยการลงนามใหม่ โดยลิงก์ใบรับรองที่มีการรับรองในอดีตของไฟล์ APK กับใบรับรองที่มี ซึ่งตอนนี้ได้เซ็นกำกับแล้ว

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีหมุนเวียนคีย์โดยใช้ apksigner

ตัวเลือกในการอนุญาตการถอดรหัสคีย์เฉพาะในอุปกรณ์ที่ปลดล็อกแล้ว

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

หากต้องการรักษาคีย์ให้ปลอดภัยจากการถอดรหัสในขณะที่อุปกรณ์ล็อกอยู่ ให้เปิดใช้ Flag โดยส่ง true ไปที่ setUnlockedDeviceRequired() หลังจากทำขั้นตอนนี้เสร็จแล้ว เมื่อหน้าจอของผู้ใช้ล็อกอยู่ พยายามถอดรหัสหรือลงนามข้อมูลโดยใช้คีย์นี้ไม่สำเร็จ อุปกรณ์ที่ล็อกอยู่ต้องมี PIN, รหัสผ่าน, ลายนิ้วมือ หรือปัจจัยอื่นที่เชื่อถือได้ก่อน เข้าถึงแล้ว

การรองรับการเข้ารหัสแบบเดิม

อุปกรณ์ Android 9 ที่จัดส่งมาพร้อมกับ Keymaster 4 รองรับ Triple Data อัลกอริทึมการเข้ารหัส หรือ Triple DES หากแอปทำงานร่วมกับรุ่นเดิม ระบบที่ต้องใช้ Triple DES ให้ใช้การเข้ารหัสประเภทนี้เมื่อเข้ารหัส ข้อมูลเข้าสู่ระบบที่ละเอียดอ่อน

หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีทำให้แอปปลอดภัยยิ่งขึ้น โปรดดูที่ความปลอดภัยสำหรับ Android นักพัฒนาซอฟต์แวร์

การเลิกใช้งาน WPS

เราเลิกใช้งานการตั้งค่าการป้องกัน Wi-Fi (WPS) เนื่องด้วยเหตุผลด้านความปลอดภัย

การสำรองข้อมูล Android

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

ข้อมูลสำรองการเข้ารหัสฝั่งไคลเอ็นต์

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

เมื่อเปิดใช้มาตรการความเป็นส่วนตัวนี้ PIN, รูปแบบ หรือรหัสผ่านของอุปกรณ์ ที่จำเป็นต่อการกู้คืนข้อมูลจากข้อมูลสำรองที่อุปกรณ์ของผู้ใช้สร้างขึ้น เพื่อเรียนรู้ ข้อมูลเพิ่มเติมเกี่ยวกับเทคโนโลยีที่อยู่เบื้องหลังฟีเจอร์นี้ โปรดดูห้องนิรภัยคีย์ Google Cloud ข้อมูลอย่างเป็นทางการ

กำหนดเงื่อนไขของอุปกรณ์ที่จำเป็นสำหรับการสำรองข้อมูล

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับการสำรองข้อมูลในอุปกรณ์ Android ได้ที่ข้อมูล ภาพรวมการสำรองข้อมูล

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

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

อรรถศาสตร์การนำทาง

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

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

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

ใน Android 8.1 (API ระดับ 27) และต่ำกว่า บริการการช่วยเหลือพิเศษอาจทำไม่ได้เสมอไป ระบุเมื่อมีการอัปเดตบานหน้าต่างที่เจาะจงของหน้าจอ เช่น เมื่อกิจกรรมแทนที่ Fragment หนึ่งด้วยอีก Fragment อื่น บานหน้าต่างประกอบด้วย องค์ประกอบ UI ที่มีลักษณะเกี่ยวข้องและมีการจัดกลุ่มอย่างสมเหตุสมผล ซึ่งโดยปกติแล้วจะประกอบด้วย ส่วนย่อย

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

หากต้องการระบุชื่อของแผง ให้ใช้เมธอด android:accessibilityPaneTitle คุณสามารถอัปเดตชื่อของแผง UI ที่จะแทนที่ รันไทม์โดยใช้ setAccessibilityPaneTitle() เช่น คุณอาจตั้งชื่อพื้นที่เนื้อหาของ Fragment

การนำทางตามส่วนหัว

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

การนำทางและเอาต์พุตของกลุ่ม

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

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

ใน Android 9 เป็นต้นไป คุณสามารถใช้ android:screenReaderFocusable แทนแอตทริบิวต์ android:focusable ในกรณีที่ การทำให้ออบเจ็กต์ View โฟกัสได้จะมีผลที่ไม่พึงประสงค์ โปรแกรมอ่านหน้าจอ โฟกัสที่องค์ประกอบทั้งหมดที่ตั้งค่า android:screenReaderFocusable หรือ android:focusable ไปยัง true

การดำเนินการตามสะดวก

Android 9 เพิ่มการรองรับการดำเนินการที่สะดวกสบายในนามของผู้ใช้ ดังนี้

การโต้ตอบกับเคล็ดลับเครื่องมือ
ฟีเจอร์ที่เพิ่มเข้ามาในเฟรมเวิร์กการช่วยเหลือพิเศษช่วยให้คุณเข้าถึง เคล็ดลับเครื่องมือใน UI ของแอป ใช้ getTooltipText() เพื่ออ่านข้อความของเคล็ดลับเครื่องมือ และใช้ ACTION_SHOW_TOOLTIP และ ACTION_HIDE_TOOLTIP เพื่อสั่งให้ View แสดงหรือ ซ่อนเคล็ดลับเครื่องมือ
การดำเนินการส่วนกลางที่เพิ่มแล้ว
Android 9 เพิ่มการรองรับการดำเนินการเพิ่มเติม 2 อย่างของอุปกรณ์ใน AccessibilityService บริการของคุณช่วยให้ผู้ใช้ล็อกอุปกรณ์และถ่ายภาพหน้าจอได้ โดยใช้ GLOBAL_ACTION_LOCK_SCREEN และ GLOBAL_ACTION_TAKE_SCREENSHOT การดำเนินการตามลำดับ

รายละเอียดการเปลี่ยนแปลงหน้าต่าง

Android 9 ช่วยให้ติดตามการอัปเดตหน้าต่างของแอปได้ง่ายขึ้นเมื่อแอป วาดหลายหน้าต่างพร้อมกัน เมื่อ TYPE_WINDOWS_CHANGED เกิดเหตุการณ์ ให้ใช้ getWindowChanges() API เพื่อพิจารณาว่าหน้าต่างเปลี่ยนแปลงไปอย่างไร ในระหว่างการอัปเดตหลายหน้าต่าง จะสร้างชุดเหตุการณ์ของตัวเอง getSource() จะแสดงมุมมองรูทของหน้าต่างที่เชื่อมโยงกับแต่ละเหตุการณ์

หากแอปกำหนดชื่อแผงการช่วยเหลือพิเศษไว้ ออบเจ็กต์ View บริการของคุณจดจำได้ เมื่อ UI ของแอปได้รับการอัปเดต เมื่อ TYPE_WINDOW_STATE_CHANGED เกิดเหตุการณ์ ให้ใช้ประเภทที่แสดงผลโดย getContentChangeTypes() เพื่อดูว่าหน้าต่างเปลี่ยนแปลงไปอย่างไร ตัวอย่างเช่น เฟรมเวิร์กนี้สามารถ ตรวจจับเมื่อแผงมีชื่อใหม่หรือเมื่อแผงหายไป

การหมุน

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

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

โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อลักษณะการทำงานที่เกี่ยวข้อง การเปลี่ยนแปลง

การหมุนอุปกรณ์เคลื่อนที่แสดงให้เห็นโหมดการหมุนใหม่ ซึ่งให้ผู้ใช้เรียกใช้การหมุนด้วยตนเอง

โหมดการหมุนใหม่ช่วยให้ผู้ใช้เรียกใช้การหมุนด้วยตนเองเมื่อจำเป็นโดยใช้ปุ่มในแถบระบบ

ข้อความ

Android 9 มีฟีเจอร์ที่เกี่ยวข้องกับข้อความดังต่อไปนี้ แพลตฟอร์ม:

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

  • แว่นขยาย: คลาส Magnifier คือ วิดเจ็ตแพลตฟอร์มที่ให้ API แว่นขยาย ช่วยให้มีความสอดคล้องกัน ฟีเจอร์แว่นขยายในทุกแอป

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

  • เลย์เอาต์ข้อความ: มีวิธีการและแอตทริบิวต์ต่างๆ มากมายที่ช่วยให้ ออกแบบ UI ของคุณ โปรดดูรายละเอียดใน เอกสารอ้างอิง สำหรับ TextView

การแปลงไฟล์ DEX ก่อนเวลา ART

รันไทม์ของ Android ในอุปกรณ์ที่ใช้ Android 9 ขึ้นไป (ART) คอมไพเลอร์ล่วงหน้าช่วยเพิ่มประสิทธิภาพให้ Dalvik Executable ที่บีบอัด (DEX) ได้โดยแปลงไฟล์ DEX ในแพ็กเกจแอปให้เป็น ที่กระชับได้ใจความ การเปลี่ยนแปลงนี้จะช่วยให้แอปเริ่มทำงานเร็วขึ้นและใช้งานได้เร็วยิ่งขึ้น และ RAM ก็น้อยลงด้วย

การปรับปรุงนี้จะเป็นประโยชน์อย่างยิ่งสำหรับอุปกรณ์ระดับโลว์เอนด์ที่มี I/O ดิสก์ที่ช้า เร็ว

การติดตามระบบในอุปกรณ์

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

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

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