API ของ Android 5.0

ระดับ API: 21

Android 5.0 (LOLLIPOP) ซึ่งนำเสนอฟีเจอร์ใหม่ๆ ให้แก่ผู้ใช้และนักพัฒนาแอป เอกสารฉบับนี้นำเสนอ รู้จัก API ใหม่ที่โดดเด่นที่สุด

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

หากต้องการดูภาพรวมกว้างๆ เกี่ยวกับฟีเจอร์ใหม่ของแพลตฟอร์มแทน โปรดดู Android Lollipop ไฮไลต์

เริ่มพัฒนา

ในการเริ่มต้นสร้างแอปสำหรับ Android 5.0 คุณต้องติดตั้ง Android SDK จากนั้นใช้ SDK Manager เพื่อดาวน์โหลดแพลตฟอร์ม SDK ของ Android 5.0 และอิมเมจระบบ

อัปเดตระดับ API เป้าหมาย

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

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของระดับ API โปรดอ่าน API คืออะไร ระดับ

การเปลี่ยนแปลงลักษณะการทำงานที่สำคัญ

หากคุณเคยเผยแพร่แอปสำหรับ Android มาแล้วก่อนหน้านี้ โปรดทราบว่าแอปอาจได้รับผลกระทบจากการเปลี่ยนแปลงใน Android 5.0

โปรดดูข้อมูลทั้งหมดการเปลี่ยนแปลงใน Android 5.0

อินเทอร์เฟซผู้ใช้

การสนับสนุนดีไซน์ Material

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

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

หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มฟังก์ชันดีไซน์ Material ลงในแอป โปรดดู ดีไซน์ Material

เอกสารและกิจกรรมต่างๆ ที่เกิดขึ้นพร้อมกันในหน้าจอล่าสุด

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

ในการแทรกช่วงพักเชิงตรรกะเพื่อให้ระบบถือว่ากิจกรรมเป็น งาน ให้ใช้ FLAG_ACTIVITY_NEW_DOCUMENT เมื่อ เปิดกิจกรรมด้วย startActivity() นอกจากนี้ คุณยังรับลักษณะการทำงานนี้ได้โดยตั้งค่า <กิจกรรม> แอตทริบิวต์ documentLaunchMode ขององค์ประกอบเป็น "intoExisting" หรือ "always" ในไฟล์ Manifest

เพื่อไม่ให้หน้าจอล่าสุดรก คุณสามารถตั้งค่าจำนวนสูงสุด จากแอปของคุณที่แสดงในหน้าจอนั้นได้ด้วย ในการดำเนินการ ให้ตั้งค่า <แอปพลิเคชัน> แอตทริบิวต์ android:maxRecents องค์ประกอบปัจจุบัน โดยสามารถระบุได้สูงสุด 50 งานต่อผู้ใช้ (25 งานสำหรับอุปกรณ์ที่มี RAM ต่ำ)

คุณสามารถตั้งค่างานในหน้าจอล่าสุดให้คงอยู่ตลอดการรีบูตได้ เพื่อควบคุม ของพฤติกรรมการคงอยู่ ให้ใช้ android:persistableMode นอกจากนี้ คุณยังสามารถเปลี่ยน คุณสมบัติการมองเห็นของกิจกรรมในหน้าจอล่าสุด เช่น สี ป้ายกำกับ และไอคอนของกิจกรรม โดยการเรียก setTaskDescription()

การอัปเดต WebView

Android 5.0 จะอัปเดต WebView ใน Chromium M37 ให้มีการปรับปรุงความปลอดภัยและความเสถียร รวมถึงการแก้ไขข้อบกพร่องด้วย สตริง User Agent เริ่มต้นสำหรับ WebView ที่ใช้ Android 5.0 มี ได้รับการอัปเดตให้รวม 37.0.0.0 เป็นหมายเลขเวอร์ชัน

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

สำหรับเมธอด onShowFileChooser() ใหม่ ตอนนี้คุณสามารถใช้ช่องฟอร์มอินพุตในWebView แล้วเปิดเครื่องมือเลือกไฟล์เพื่อเลือกรูปภาพและไฟล์จากอุปกรณ์ Android

นอกจากนี้ รุ่นนี้ยังมีการสนับสนุน WebAudio WebGL และ มาตรฐานแบบเปิดของ WebRTC ดูข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์ใหม่ที่รวมอยู่ในรุ่นนี้ได้ที่ WebView สำหรับ Android

การจับภาพหน้าจอและการแชร์

Android 5.0 ช่วยให้คุณสามารถเพิ่มความสามารถในการจับภาพหน้าจอและการแชร์หน้าจอไปยัง แอปของคุณได้ด้วย android.media.projection API ใหม่ ฟังก์ชันนี้ มีประโยชน์ เช่น หากคุณต้องการเปิดใช้การแชร์หน้าจอในวิดีโอ แอปการประชุม

เมธอด createVirtualDisplay() ใหม่ จะช่วยให้แอปของคุณจับภาพเนื้อหาของหน้าจอหลักได้ (ค่าเริ่มต้น ) ลงในออบเจ็กต์ Surface ซึ่งแอปของคุณสามารถ ทั่วทั้งเครือข่าย API อนุญาตให้จับภาพหน้าจอเฉพาะที่ไม่ปลอดภัย เนื้อหา ไม่ใช่เสียงของระบบ หากต้องการเริ่มการจับภาพหน้าจอ แอปของคุณต้อง ขอสิทธิ์จากผู้ใช้โดยเปิดกล่องโต้ตอบการจับภาพหน้าจอโดยใช้ ได้รับ Intent ผ่านทาง วันที่ createScreenCaptureIntent()

ดูตัวอย่างวิธีใช้ API ใหม่ได้ที่ MediaProjectionDemo ในโปรเจ็กต์ตัวอย่าง

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

การแจ้งเตือนบนหน้าจอล็อก

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

แอปของคุณควบคุมระดับรายละเอียดที่จะแสดงได้เมื่อมีการแจ้งเตือน ที่แสดงบนหน้าจอล็อกที่ปลอดภัย หากต้องการควบคุมระดับการมองเห็น โทร setVisibility() และ ให้ระบุค่าใดค่าหนึ่งต่อไปนี้

  • VISIBILITY_PRIVATE: แสดงข้อมูลพื้นฐาน เช่น ไอคอนการแจ้งเตือน แต่ซ่อนไอคอนไว้ เพื่อดูเนื้อหาทั้งหมดของการแจ้งเตือน
  • VISIBILITY_PUBLIC: แสดงเนื้อหาทั้งหมดของการแจ้งเตือน
  • VISIBILITY_SECRET: ไม่แสดงอะไรเลย ยกเว้นไอคอนการแจ้งเตือน

เมื่อระดับการมองเห็นเป็น VISIBILITY_PRIVATE คุณยังแสดงการแจ้งเตือนเวอร์ชันที่มีการปกปิด เนื้อหาที่ซ่อนรายละเอียดส่วนตัว ตัวอย่างเช่น แอป SMS อาจแสดง การแจ้งเตือนที่แสดงข้อความ "คุณมี 3 ข้อความใหม่" แต่ซ่อนข้อความไว้ เนื้อหาและผู้ส่ง หากต้องการให้การแจ้งเตือนทางเลือกนี้ ให้สร้างลิงก์ การแจ้งเตือนการแทนที่โดยใช้ Notification.Builder วันและเวลา คุณสร้างออบเจ็กต์การแจ้งเตือนส่วนตัว โปรดแนบการแจ้งเตือนการแทนที่ ผ่าน setPublicVersion() วิธี

ข้อมูลเมตาของการแจ้งเตือน

Android 5.0 ใช้ข้อมูลเมตาที่เชื่อมโยงกับการแจ้งเตือนของแอป เพื่อจัดเรียงการแจ้งเตือนอย่างชาญฉลาดยิ่งขึ้น หากต้องการตั้งค่าข้อมูลเมตา ให้เรียกเมธอด ต่อไปนี้ใน Notification.Builder เมื่อคุณ สร้างการแจ้งเตือน:

  • setCategory(): บอกระบบถึงวิธีจัดการการแจ้งเตือนของแอปเมื่อ อุปกรณ์อยู่ในโหมดลำดับความสำคัญ (เช่น หากการแจ้งเตือนแสดงถึง สายเรียกเข้า ข้อความโต้ตอบแบบทันที หรือการปลุก)
  • setPriority(): ทำเครื่องหมายว่าการแจ้งเตือนสำคัญมากหรือน้อยกว่าการแจ้งเตือนปกติ การแจ้งเตือนที่ตั้งค่าช่องลำดับความสำคัญเป็น PRIORITY_MAX หรือ PRIORITY_HIGHปรากฏใน หน้าต่างแบบลอยขนาดเล็ก หากการแจ้งเตือนมีเสียงหรือการสั่นด้วย
  • addPerson(): ช่วยให้คุณสามารถเพิ่มบุคคลที่เกี่ยวข้องกับการแจ้งเตือนได้อย่างน้อยหนึ่งคน แอปของคุณสามารถใช้สิ่งนี้เพื่อส่งสัญญาณไปยังระบบว่าควรจัดกลุ่มไว้ด้วยกัน การแจ้งเตือนจากบุคคลที่ระบุ หรือจัดอันดับการแจ้งเตือนจากบุคคลเหล่านี้ มีความสำคัญกว่า

กราฟิก

การรองรับ OpenGL ES 3.1

Android 5.0 เพิ่มอินเทอร์เฟซ Java และการรองรับ OpenGL แบบเนทีฟ ES 3.1 ฟังก์ชันใหม่ที่สำคัญซึ่งมีให้ใน OpenGL ES 3.1 ได้แก่

  • ตัวปรับเงาการประมวลผล
  • แยกวัตถุที่ให้เฉดสี
  • คำสั่งวาดทางอ้อม
  • พื้นผิวแบบหลายตัวอย่างและพื้นผิวลายฉลุ
  • การปรับปรุงการแรเงาภาษา
  • ส่วนขยายสำหรับโหมดผสานและการแก้ไขข้อบกพร่องขั้นสูง
  • ความเข้ากันได้แบบย้อนหลังกับ OpenGL ES 2.0 และ 3.0

อินเทอร์เฟซ Java สำหรับ OpenGL ES 3.1 บน Android นั้นมาพร้อมกับ GLES31 เมื่อใช้ OpenGL ES 3.1 โปรดแน่ใจว่าคุณ โปรดประกาศไว้ในไฟล์ Manifest ด้วย <uses-feature> และแอตทริบิวต์ android:glEsVersion เช่น

<manifest>
    <uses-feature android:glEsVersion="0x00030001" />
    ...
</manifest>

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

แพ็กส่วนขยายของ Android

นอกจาก OpenGL ES 3.1 แล้ว รุ่นนี้ยังมีแพ็กส่วนขยายที่มี อินเทอร์เฟซ Java และการสนับสนุนแบบเนทีฟสำหรับฟังก์ชันการทำงานกราฟิกขั้นสูง เหล่านี้ Android จะถือว่าส่วนขยายเป็นแพ็กเกจเดียว (หาก มีส่วนขยาย ANDROID_extension_pack_es31a รายการ แอปของคุณสามารถ สมมติว่ามีส่วนขยายทั้งหมดในแพ็กเกจอยู่และเปิดใช้ภาษาแรเงา ด้วยข้อความ #extension เพียงข้อความเดียว)

แพ็กส่วนขยายสนับสนุนสิ่งต่อไปนี้

  • การรับประกันการรองรับ Fragment Shape สำหรับบัฟเฟอร์พื้นที่เก็บข้อมูล รูปภาพ และ atomics (การรองรับตัวปรับแสงเงา Fragment เป็นตัวเลือกที่ไม่บังคับใน OpenGL ES 3.1)
  • Tessellation และเครื่องมือให้เฉดสีเรขาคณิต
  • รูปแบบการบีบอัดพื้นผิว ASTC (LDR)
  • การประมาณค่าในช่วงและการลงสีตามตัวอย่าง
  • โหมดผสมผสานแบบต่างๆ สำหรับการแนบสีแต่ละสีในเฟรมบัฟเฟอร์

อินเทอร์เฟซ Java สำหรับแพ็กส่วนขยายมาพร้อมกับ GLES31Ext ในไฟล์ Manifest ของแอป คุณสามารถประกาศว่า แอปของคุณจะต้องติดตั้งเฉพาะในอุปกรณ์ที่รองรับชุดส่วนขยายเท่านั้น เช่น

<manifest>
    <uses-feature android:name=“android.hardware.opengles.aep”
        android:required="true" />
    ...
</manifest>

สื่อ

API กล้องถ่ายรูปสำหรับความสามารถขั้นสูงของกล้อง

Android 5.0 เปิดตัวฟีเจอร์ใหม่ android.hardware.camera2 API เพื่ออำนวยความสะดวกในการจับภาพความละเอียดและการประมวลผลรูปภาพ ตอนนี้คุณสามารถ เข้าถึงอุปกรณ์กล้องที่ใช้ได้กับระบบแบบเป็นโปรแกรมด้วย getCameraIdList() และเชื่อมต่อกับอุปกรณ์ที่ต้องการด้วย openCamera() หากต้องการเริ่มจับภาพ ให้สร้าง CameraCaptureSession และระบุวัตถุ Surface เพื่อส่งรูปภาพที่จับภาพไว้ CameraCaptureSession สามารถกําหนดค่าเป็น ถ่ายช็อตเดียวหรือหลายภาพ ในภาพถ่ายอัจฉริยะ

หากต้องการรับการแจ้งเตือนเมื่อมีการจับภาพใหม่ ให้ใช้ Listener CameraCaptureSession.CaptureCallback แล้วตั้งค่าในคำขอจับภาพ ในตอนนี้เมื่อระบบสร้างอิมเมจเสร็จสมบูรณ์ คำขอจับภาพ CameraCaptureSession.CaptureCallback ของคุณ Listener รับสาย onCaptureCompleted(), ซึ่งจะส่งข้อมูลเมตาการจับภาพให้คุณใน CaptureResult

ชั้นเรียน CameraCharacteristics ช่วยให้ จะตรวจหาคุณลักษณะของกล้องที่มีในอุปกรณ์ ออบเจ็กต์ พร็อพเพอร์ตี้ INFO_SUPPORTED_HARDWARE_LEVEL แสดงระดับฟังก์ชันการทำงานของกล้อง

  • ทุกอุปกรณ์รองรับอย่างน้อย INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY ระดับฮาร์ดแวร์ที่มีความสามารถ ใกล้เคียงกับของเดิม Camera ที่เลิกใช้งานแล้ว API
  • อุปกรณ์ที่รองรับระดับฮาร์ดแวร์ INFO_SUPPORTED_HARDWARE_LEVEL_FULL จะดำเนินการด้วยตนเองได้ การควบคุมการจับภาพและหลังการประมวลผล และการจับภาพความละเอียดสูง ที่อัตราเฟรมสูง

ดูวิธีใช้ กล้อง API โปรดดูการติดตั้งใช้งาน Camera2Basic และ Camera2Video ตัวอย่างในรุ่นนี้

การเล่นเสียง

รุ่นนี้มีการเปลี่ยนแปลงต่อไปนี้กับ AudioTrack:

  • ตอนนี้แอปของคุณให้ข้อมูลเสียงในรูปแบบจุดลอยตัวได้แล้ว (ENCODING_PCM_FLOAT) ช่วงเวลานี้ ทำให้ช่วงไดนามิกกว้างขึ้น ความแม่นยำสม่ำเสมอมากขึ้น และมีศักยภาพมากขึ้น เลขคณิตที่จุดลอยตัวมีประโยชน์อย่างยิ่งในระหว่างการคำนวณกลาง จุดสิ้นสุดการเล่นใช้รูปแบบจำนวนเต็มสำหรับข้อมูลเสียงและมีความลึกของบิตต่ำกว่า (ใน Android 5.0 ไปป์ไลน์ภายในบางส่วนยังไม่ ทศนิยม)
  • ตอนนี้แอปของคุณสามารถให้ข้อมูลเสียงเป็น ByteBuffer ได้แล้ว รูปแบบเดียวกับที่ MediaCodec ระบุไว้
  • WRITE_NON_BLOCKING ช่วยลดความซับซ้อนในการบัฟเฟอร์และการจัดชุดข้อความหลายชุดสำหรับบางแอป

ตัวควบคุมการเล่นสื่อ

ใช้ API การแจ้งเตือนและสื่อใหม่เพื่อให้มั่นใจได้ว่า UI ของระบบจะทราบเกี่ยวกับการเล่นสื่อของคุณ และสามารถแยกและแสดงปกอัลบั้ม ตอนนี้การควบคุมการเล่นสื่อผ่าน UI และบริการทำได้ง่ายกว่าเดิมด้วย MediaSession และ MediaController ชั้นเรียน

คลาส MediaSession ใหม่จะแทนที่ คลาส RemoteControlClient ที่เลิกใช้งานแล้วและให้ เมธอด Callback ชุดเดียวสำหรับการจัดการตัวควบคุมการนำส่งและปุ่มสื่อ หากแอปของคุณมีการเล่นสื่อและทำงานบน Android TV หรือ แพลตฟอร์ม Wear ให้ใช้ ชั้นเรียน MediaSession เพื่อจัดการการเดินทางของคุณ โดยใช้เมธอด Callback เดียวกัน

ตอนนี้คุณสามารถสร้างแอปตัวควบคุมสื่อของคุณเองได้โดยใช้ MediaController ชั้นเรียน ชั้นเรียนนี้มี วิธีที่ปลอดภัยของชุดข้อความในการตรวจสอบและควบคุมการเล่นสื่อจากกระบวนการ UI ของแอป เมื่อสร้างตัวควบคุม ให้ระบุ MediaSession.Token เพื่อให้แอปของคุณโต้ตอบกับ MediaSession ที่กำหนดได้ เมื่อใช้เมธอด MediaController.TransportControls คุณสามารถส่งคำสั่ง เช่น play() stop(), skipToNext(), และsetRating() เพื่อควบคุมการเล่นสื่อในเซสชันนั้น เมื่อมีตัวควบคุม คุณจะ ลงทะเบียนออบเจ็กต์ MediaController.Callback เพื่อ ฟังการเปลี่ยนแปลงข้อมูลเมตาและสถานะในเซสชัน

นอกจากนี้ คุณสามารถสร้างการแจ้งเตือนที่สมบูรณ์ที่อนุญาตการควบคุมการเล่น เชื่อมโยงกับเซสชันสื่อกับ Notification.MediaStyle ใหม่

การเรียกดูสื่อ

Android 5.0 เพิ่มความสามารถสำหรับแอปในการเรียกดูเนื้อหาสื่อ ไลบรารีของแอปอื่นผ่าน android.media.เรียกดู API หากต้องการแสดงเนื้อหาสื่อในแอป ให้ขยาย MediaBrowserService ชั้นเรียน การใช้งาน MediaBrowserService ควรให้สิทธิ์เข้าถึง MediaSession.Token เพื่อให้แอปเล่นเนื้อหาสื่อได้ ที่มีให้ผ่านทางบริการของคุณ

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

พื้นที่เก็บข้อมูล

การเลือกไดเรกทอรี

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

ในการเลือกแผนผังย่อยของไดเรกทอรี ให้สร้างและส่ง OPEN_DOCUMENT_TREE Intent ระบบจะแสดงทั้งหมด DocumentsProvider อินสแตนซ์ที่รองรับการเลือกแผนผังย่อย ซึ่งช่วยให้ผู้ใช้เรียกดูและเลือกไดเรกทอรีได้ URI ที่แสดงผลแสดงถึง สิทธิ์เข้าถึงแผนผังย่อยที่เลือก จากนั้นคุณสามารถใช้ buildChildDocumentsUriUsingTree() และ buildDocumentUriUsingTree() พร้อมทั้ง query() เพื่อสำรวจแผนผังย่อย

เมธอด createDocument() ใหม่ช่วยให้คุณสร้างเอกสารหรือไดเรกทอรีใหม่ได้จากทุกที่ ใต้โครงสร้างย่อย หากต้องการจัดการเอกสารที่มีอยู่ ให้ใช้ renameDocument() และ deleteDocument() ตรวจสอบ COLUMN_FLAGS เพื่อยืนยันการสนับสนุนผู้ให้บริการสำหรับการโทรเหล่านี้ก่อนออกการโทร

หากคุณใช้ DocumentsProvider และต้องการ เพื่อรองรับการเลือกแผนผังย่อย ให้ใช้ isChildDocument() และรวม FLAG_SUPPORTS_IS_CHILD ใน COLUMN_FLAGS

Android 5.0 ยังมีไดเรกทอรีใหม่เฉพาะแพ็กเกจใน พื้นที่เก็บข้อมูลที่ใช้ร่วมกันซึ่งแอปของคุณสามารถวางไฟล์สื่อเพื่อรวมไว้ใน MediaStore ฟิลด์ getExternalMediaDirs() แสดงเส้นทางไปยังรายการเหล่านี้ ไดเรกทอรีในอุปกรณ์จัดเก็บข้อมูลที่ใช้ร่วมกันทั้งหมด คล้ายกับ getExternalFilesDir(), แอปไม่จำเป็นต้องใช้สิทธิ์เพิ่มเติมเพื่อเข้าถึงเส้นทางที่แสดงผล จะสแกนหาสื่อใหม่ในไดเรกทอรีเหล่านี้เป็นระยะๆ แต่คุณยังสามารถ ใช้ MediaScannerConnection เพื่อสแกนหาใหม่อย่างชัดเจน เนื้อหา

ระบบไร้สายและ การเชื่อมต่อ

การเชื่อมต่อเครือข่ายหลายรายการ

Android 5.0 มี API ใหม่แบบหลายเครือข่ายที่ช่วยให้แอปของคุณ สแกนหาเครือข่ายที่พร้อมใช้งาน ซึ่งมีความสามารถเฉพาะบางอย่าง และ สร้างการเชื่อมต่อกับพวกเขา ฟังก์ชันนี้มีประโยชน์เมื่อแอปของคุณ ต้องใช้เครือข่ายเฉพาะทาง เช่น เครือข่าย supL, MMS หรือเครือข่ายการเรียกเก็บเงินผ่านผู้ให้บริการมือถือ หรือหากคุณต้องการส่งข้อมูลโดยใช้โปรโตคอลรับส่งข้อมูลชนิดใดชนิดหนึ่งโดยเฉพาะ

หากต้องการเลือกและเชื่อมต่อเครือข่ายจากแอปแบบไดนามิก ให้ทำตามขั้นตอนต่อไปนี้ ขั้นตอน:

  1. สร้าง ConnectivityManager
  2. ใช้ชั้นเรียน NetworkRequest.Builder เพื่อสร้าง NetworkRequest และระบุฟีเจอร์ของเครือข่าย และประเภทการขนส่งที่แอปของคุณสนใจ
  3. หากต้องการสแกนหาเครือข่ายที่เหมาะสม ให้โทรหา requestNetwork() หรือregisterNetworkCallback() และส่งผ่าน NetworkRequest ออบเจ็กต์และการใช้งาน ConnectivityManager.NetworkCallback ใช้เมนู requestNetwork()หากต้องการเปลี่ยนไปใช้เครือข่ายที่เหมาะสมเมื่อตรวจพบ ที่จะได้รับ เฉพาะการแจ้งเตือนสำหรับเครือข่ายที่สแกนโดยไม่มีการเปลี่ยนอย่างต่อเนื่อง ให้ใช้ registerNetworkCallback() แทน

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

บลูทูธพลังงานต่ำ

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

android.bluetooth.le API ใหม่ช่วยให้แอปของคุณเผยแพร่ได้ โฆษณา สแกนหาการตอบกลับ และเชื่อมต่อแบบฟอร์มด้วยบลูทูธที่อยู่ใกล้เคียง อุปกรณ์ LE หากต้องการใช้ฟีเจอร์โฆษณาและการสแกนใหม่ ให้เพิ่ม BLUETOOTH_ADMIN สิทธิ์ในไฟล์ Manifest เมื่อผู้ใช้อัปเดตหรือดาวน์โหลดแอปจาก Play Store ระบบจะขอให้มอบสิทธิ์ต่อไปนี้แก่แอปของคุณ "ข้อมูลการเชื่อมต่อบลูทูธ: อนุญาตให้แอปควบคุมบลูทูธ รวมถึงการประกาศไปยังหรือการรับข้อมูลเกี่ยวกับอุปกรณ์บลูทูธที่อยู่ใกล้เคียง"

เริ่มการโฆษณาโดยใช้ Bluetooth LE เพื่อให้อุปกรณ์อื่นๆ ค้นพบได้ แอปของคุณ โทร startAdvertising() และส่งการติดตั้งใช้งาน ชั้นเรียนAdvertiseCallback ออบเจ็กต์ Callback ได้รับรายงานความสำเร็จหรือความล้มเหลวของการดำเนินการโฆษณา

Android 5.0 แนะนำคลาส ScanFilter ที่แอปของคุณสามารถสแกนได้ โดยเฉพาะอุปกรณ์ที่ผู้อ่านสนใจ วิธีเริ่มสแกนหาบลูทูธ อุปกรณ์ LE โทรหา startScan() และส่งในรายการตัวกรอง ในการเรียกใช้เมธอด คุณยังต้องระบุ การใช้ ScanCallback เพื่อรายงานเมื่อ พบโฆษณา Bluetooth LE

การเพิ่มประสิทธิภาพ NFC

Android 5.0 เพิ่มการเพิ่มประสิทธิภาพเหล่านี้เพื่อให้ทำงานแบบกว้างและอีกมากมาย การใช้งาน NFC ที่ยืดหยุ่น:

  • Androidบีมพร้อมใช้งานในเมนูแชร์แล้ว
  • แอปของคุณสามารถเรียกใช้ Android Beam ในอุปกรณ์ของผู้ใช้เพื่อแชร์ข้อมูล กำลังโทรหา invokeBeam() เพื่อไม่ให้ผู้ใช้ต้องแตะอุปกรณ์กับอุปกรณ์อื่นด้วยตนเอง อุปกรณ์ที่สามารถใช้ NFC เพื่อโอนข้อมูลให้เสร็จสมบูรณ์
  • คุณใช้เมธอด createTextRecord() ใหม่เพื่อสร้างระเบียน NDEF ที่มีข้อมูลข้อความ UTF-8 ได้
  • หากคุณกำลังพัฒนาแอปการชำระเงิน ตอนนี้คุณสามารถทำสิ่งต่อไปนี้ ลงทะเบียนรหัสแอปพลิเคชัน NFC (AID) แบบไดนามิกด้วยการเรียก registerAidsForService() คุณยังสามารถใช้ setPreferredService() เพื่อตั้งค่าบริการจำลองบัตรที่ต้องการ ใช้เมื่อกิจกรรมที่เจาะจงอยู่เบื้องหน้า

โปรเจ็กต์วอลตา

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

การกำหนดเวลางาน

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

  • แอปมีงานที่ไม่เกี่ยวข้องกับผู้ใช้ ซึ่งคุณสามารถเลื่อนเวลาออกไปได้
  • แอปมีงานที่คุณต้องการทำเมื่อเสียบปลั๊กอุปกรณ์แล้ว
  • แอปมีงานที่ต้องมีการเข้าถึงเครือข่ายหรือ Wi-Fi การเชื่อมต่อ
  • แอปมีงานจำนวนมากที่คุณต้องการเรียกใช้เป็นกลุ่มเป็นประจำ กำหนดการ

หน่วยงานจะอยู่ภายใต้ออบเจ็กต์ JobInfo ออบเจ็กต์นี้ระบุเกณฑ์การจัดตารางเวลา

ใช้คลาส JobInfo.Builder เพื่อกำหนดค่าวิธีที่ฟังก์ชัน งานที่กำหนดเวลาไว้ควรจะทำงาน คุณตั้งเวลาให้งานทำงานภายใต้ เช่น

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

เช่น คุณสามารถเพิ่มโค้ดลักษณะนี้เพื่อเรียกใช้งานใน เครือข่ายที่ไม่มีการตรวจวัด:

Kotlin

val uploadTask: JobInfo = JobInfo.Builder(
        jobId,
        serviceComponent /* JobService component */
).run {
    setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
    build()
}
val jobScheduler = context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler
jobScheduler.schedule(uploadTask)

Java

JobInfo uploadTask = new JobInfo.Builder(jobId,
                                         serviceComponent /* JobService component */)
        .setRequiredNetworkCapabilities(JobInfo.NETWORK_TYPE_UNMETERED)
        .build();
JobScheduler jobScheduler =
        (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE);
jobScheduler.schedule(uploadTask);

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

หากต้องการดูตัวอย่างวิธีใช้ JobScheduler API ดูตัวอย่างการใช้งาน JobSchedulerSample ในรุ่นนี้

เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์สำหรับการใช้งานแบตเตอรี่

คำสั่ง dumpsys batterystats ใหม่สร้างสิ่งที่น่าสนใจ ข้อมูลสถิติเกี่ยวกับการใช้แบตเตอรี่ในอุปกรณ์ ซึ่งจัดเรียงตามรหัสผู้ใช้ที่ไม่ซ้ำกัน (UID) สถิติดังกล่าวประกอบด้วย

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

ใช้ตัวเลือก --help เพื่อเรียนรู้เกี่ยวกับตัวเลือกต่างๆ สำหรับ ปรับผลลัพธ์ให้เหมาะสม ตัวอย่างเช่น หากต้องการพิมพ์การใช้งานแบตเตอรี่ สำหรับแพ็กเกจแอปหนึ่งๆ นับตั้งแต่ที่มีการชาร์จอุปกรณ์ครั้งล่าสุด ให้เรียกใช้ คำสั่ง:

$ adb shell dumpsys batterystats --charged <package-name>

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

Android สำหรับที่ทำงานและในสถานศึกษา

การจัดสรรที่มีการจัดการ

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

ส่ง ACTION_PROVISION_MANAGED_PROFILE ใน Intent หาก สำเร็จ ระบบจะทริกเกอร์ การติดต่อกลับของ onProfileProvisioningComplete() จากนั้นคุณสามารถโทรหา setProfileEnabled() เพื่อ เปิดใช้โปรไฟล์ที่มีการจัดการนี้

โดยค่าเริ่มต้น จะมีแอปเพียงบางส่วนเท่านั้นที่เปิดใช้ในโปรไฟล์ที่มีการจัดการ คุณสามารถติดตั้งแอปเพิ่มเติมได้ในโปรไฟล์ที่มีการจัดการโดยการโทร enableSystemApp()

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

หากต้องการดูวิธีใช้ฟังก์ชันใหม่ โปรดไปที่ ตัวอย่างการใช้งาน BasicManagedProfile ในรุ่นนี้

เจ้าของอุปกรณ์

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

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

การปักหมุดหน้าจอ

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

การเปิดใช้งานการตรึงหน้าจอทำได้ 2 วิธีดังนี้

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

เมื่อการล็อกงานทำงานอยู่ ลักษณะการทำงานต่อไปนี้จะเกิดขึ้น

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

กรอบการพิมพ์

แสดงผล PDF เป็นบิตแมป

คุณสามารถแสดงผลหน้าเอกสาร PDF เป็นภาพบิตแมปสำหรับการพิมพ์โดยใช้ โดยใช้ชั้นเรียน PdfRenderer ใหม่ คุณต้องระบุ ParcelFileDescriptor ที่แสวงหาได้ (ซึ่งก็คือเนื้อหา สามารถเข้าถึงได้แบบสุ่ม) ซึ่งระบบจะเขียนเนื้อหาที่พิมพ์ได้ แอปของคุณสามารถได้รับหน้าสำหรับการแสดงผลด้วย openPage() แล้วโทร วันที่ render() เพื่อเปลี่ยน PdfRenderer.Page ที่เปิดอยู่ให้เป็นบิตแมป คุณ และยังสามารถตั้งค่าพารามิเตอร์เพิ่มเติม หากคุณต้องการแปลง ลงในรูปภาพบิตแมป (เช่น เพื่อใช้ การแสดงผลแบบเรียงชิดกัน เพื่อซูมเข้าในเอกสาร)

ดูตัวอย่างวิธีใช้ API ใหม่ได้ที่ PdfRendererBasic ตัวอย่าง

ระบบ

สถิติการใช้งานแอป

ตอนนี้คุณสามารถเข้าถึงประวัติการใช้งานแอปในอุปกรณ์ Android ด้วย android.app.usage API ใหม่ API นี้ให้รายละเอียดการใช้งานเพิ่มเติม ที่เลิกใช้แล้ว getRecentTasks() วิธี หากต้องการใช้ API นี้ คุณต้องประกาศฟิลด์ "android.permission.PACKAGE_USAGE_STATS" ในไฟล์ Manifest ผู้ใช้ต้องเปิดใช้การเข้าถึงสำหรับแอปนี้ผ่านการตั้งค่า > ด้วย ความปลอดภัย > แอป โดยมีสิทธิ์เข้าถึงการใช้งาน

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

  • ข้อมูลรายวัน: 7 วัน
  • ข้อมูลรายสัปดาห์: 4 สัปดาห์
  • ข้อมูลรายเดือน: 6 เดือน
  • ข้อมูลรายปี: 2 ปี

ระบบจะบันทึกข้อมูลต่อไปนี้สำหรับแต่ละแอป

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

การทดสอบและ การช่วยเหลือพิเศษ

การปรับปรุงการทดสอบและการเข้าถึง

Android 5.0 เพิ่มการสนับสนุนต่อไปนี้สำหรับการทดสอบและ การช่วยเหลือพิเศษ:

  • getWindowAnimationFrameStats() ใหม่ และ getWindowContentFrameStats() จะจับสถิติเฟรมสำหรับภาพเคลื่อนไหวบนหน้าต่างและเนื้อหา วิธีการเหล่านี้ ช่วยให้คุณเขียนการทดสอบการใช้เครื่องมือเพื่อประเมินว่าแอปแสดงผลหรือไม่ ให้มีความถี่ในการรีเฟรชที่เพียงพอเพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ราบรื่น
  • ฟิลด์ executeShellCommand() คุณจะเรียกใช้คำสั่ง Shell จากการทดสอบการใช้เครื่องมือได้ การดำเนินการตามคำสั่งนั้นคล้ายกับการเรียกใช้ adb shell จากโฮสต์ เชื่อมต่อกับอุปกรณ์ ทำให้คุณสามารถใช้เครื่องมือที่อิงตาม Shell ได้ เช่น dumpsys, am, content และ pm
  • บริการการช่วยเหลือพิเศษและเครื่องมือทดสอบที่ใช้ API การช่วยเหลือพิเศษ (เช่น UiAutomator) สามารถดึงข้อมูลโดยละเอียดเกี่ยวกับคุณสมบัติของหน้าต่างใน ที่ผู้ใช้ที่มองเห็นสามารถโต้ตอบด้วยได้ หากต้องการเรียกข้อมูลรายการ AccessibilityWindowInfo ออบเจ็กต์ เรียกใช้ฟังก์ชัน วันที่ getWindows()
  • AccessibilityNodeInfo.AccessibilityAction ใหม่ ช่วยให้คุณสามารถกำหนดการทำงานมาตรฐานหรือที่กำหนดเองเพื่อดำเนินการใน AccessibilityNodeInfo AccessibilityNodeInfo.AccessibilityAction ใหม่ จะแทนที่ API ที่เกี่ยวข้องกับการดำเนินการซึ่งพบก่อนหน้านี้ใน AccessibilityNodeInfo
  • Android 5.0 มอบการควบคุมที่ละเอียดขึ้นสำหรับการสังเคราะห์การอ่านออกเสียงข้อความ แอปของคุณ ชั้นเรียน Voice ใหม่ช่วยให้แอปของคุณ ใช้โปรไฟล์เสียงที่เชื่อมโยงกับภาษา คุณภาพ และเวลาในการตอบสนองเฉพาะ การจัดประเภท และพารามิเตอร์เฉพาะเครื่องมืออ่านออกเสียงข้อความ

IME

สลับระหว่างภาษาในการป้อนข้อมูลได้ง่ายขึ้น

เริ่มตั้งแต่ Android 5.0 เป็นต้นไป ผู้ใช้จะเปลี่ยนไปมาระหว่างส่วนต่างๆ ได้ง่ายขึ้น อินพุตทั้งหมด Method Editor (IME) ที่แพลตฟอร์มรองรับ การดำเนินการตามที่กำหนดไว้ การสลับการทำงาน (โดยปกติจะแตะไอคอนโลกบนแป้นพิมพ์) ผ่าน IME ดังกล่าวทั้งหมด การเปลี่ยนแปลงลักษณะการทำงานนี้ดำเนินการโดย shouldOfferSwitchingToNextInputMethod()

นอกจากนี้ ปัจจุบันเฟรมเวิร์กจะตรวจสอบว่า IME ถัดไปมี กลไกการเปลี่ยนเลย (และไม่ว่า IME นั้นจะสนับสนุนการเปลี่ยนไปใช้ IME ต่อจากนั้น) CANNOT TRANSLATE IME ที่มีกลไกการเปลี่ยนจะไม่หมุนเวียนไปยัง IME โดยไม่มี IME ช่วงเวลานี้ การเปลี่ยนแปลงลักษณะการทำงานจะได้รับการปรับใช้โดย switchToNextInputMethod()

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

การประกาศไฟล์ Manifest

ฟีเจอร์ที่จำเป็นที่ต้องประกาศ

ตอนนี้ระบบรองรับค่าต่อไปนี้ใน <uses-feature> เพื่อให้มั่นใจว่าแอปของคุณติดตั้งในอุปกรณ์ที่ นำเสนอฟีเจอร์ที่แอปของคุณต้องการ

สิทธิ์ของผู้ใช้

สิทธิ์ต่อไปนี้มีการรองรับแล้วใน <uses-permission> เพื่อประกาศสิทธิ์ที่แอปของคุณต้องใช้ในการเข้าถึง API บางอย่าง

  • BIND_DREAM_SERVICE: เมื่อกำหนดเป้าหมาย API ระดับ 21 ขึ้นไป จำเป็นต้องใช้สิทธิ์นี้โดย เดย์ดรีม เพื่อให้แน่ใจว่ามีเพียงระบบเท่านั้นที่สามารถเชื่อมโยงได้