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 Design ลงในแอปได้ที่Material Design

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

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

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

คุณสามารถกำหนดจำนวนงานสูงสุดจากแอปที่จะปรากฏในหน้าจอล่าสุดได้เพื่อไม่ให้หน้าจอรก โดยให้ตั้งค่าแอตทริบิวต์ <application> 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 ในการเข้าถึงทรัพยากรที่ได้รับการคุ้มครอง เช่น กล้องและไมโครโฟน ผ่าน Web 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 อาจแสดงการแจ้งเตือนที่ระบุว่า "คุณมี SMS ใหม่ 3 ข้อความ" แต่ซ่อนเนื้อหาข้อความและผู้ส่ง หากต้องการระบุการแจ้งเตือนทางเลือกนี้ ก่อนอื่นให้สร้างการแจ้งเตือนทดแทนโดยใช้ Notification.Builder เมื่อคุณสร้างออบเจ็กต์การแจ้งเตือนส่วนตัว ให้แนบการแจ้งเตือนการเปลี่ยนทดแทนมากับออบเจ็กต์ผ่านเมธอด setPublicVersion()

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

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

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

กราฟิก

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

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

  • โปรแกรมประมวลผลเฉดสี
  • แยกออบเจ็กต์ชิดเดอร์
  • คำสั่งวาดทางอ้อม
  • พื้นผิวแบบ Multisample และพื้นผิวสแตนซิล
  • การปรับปรุงภาษาของการปรับแสง
  • ส่วนขยายสำหรับโหมดการผสมขั้นสูงและการแก้ไขข้อบกพร่อง
  • ความเข้ากันได้แบบย้อนหลังกับ 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 Extension Pack

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

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

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

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

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

สื่อ

Camera 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 ที่เลิกใช้งานแล้ว และมีชุดเมธอดการเรียกกลับชุดเดียวสำหรับจัดการตัวควบคุมการนําทางและปุ่มสื่อ หากแอปของคุณมีการเล่นสื่อและทำงานบน 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 จากคอลแบ็กเพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับเครือข่าย หรือเพื่อเปลี่ยนเส้นทางการจราจรให้ใช้เครือข่ายที่เลือก

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

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

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

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

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() เพื่อตั้งค่าบริการจำลองบัตรที่ต้องการ ใช้เมื่อกิจกรรมที่เจาะจงอยู่เบื้องหน้า

Project Volta

นอกเหนือจากฟีเจอร์ใหม่แล้ว 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() ช่วยให้คุณเรียกใช้คําสั่งเชลล์จากการทดสอบเครื่องมือวัดประสิทธิภาพได้ การดำเนินการคำสั่งจะคล้ายกับการทำงาน adb 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 ขึ้นไป บริการ Daydream จะต้องได้รับสิทธิ์นี้เพื่อให้มั่นใจว่ามีเพียงระบบเท่านั้นที่จะเชื่อมโยงกับบริการได้