ระดับ 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 ที่ให้ความรู้สึกเป็นธรรมชาติสำหรับผู้ใช้ การสนับสนุนดังกล่าวรวมถึงสิ่งต่อไปนี้
- ธีม Material
- ดูเงา
- วิดเจ็ต
RecyclerView
- ภาพเคลื่อนไหวที่วาดได้และเอฟเฟกต์การจัดรูปแบบ
- ภาพเคลื่อนไหวดีไซน์ Material และเอฟเฟกต์การเปลี่ยนกิจกรรม
- อนิเมเตอร์สําหรับพร็อพเพอร์ตี้มุมมองตามสถานะของมุมมอง
- วิดเจ็ต UI และแถบแอปที่ปรับแต่งได้พร้อมชุดสีที่คุณควบคุม
- ภาพเคลื่อนไหวและไม่ใช่ภาพเคลื่อนไหวที่ถอนออกได้โดยอิงตามกราฟิกเวกเตอร์ XML
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเพิ่มฟังก์ชันการทำงานของ Material Design ลงในแอปได้ที่Material Design
เอกสารและกิจกรรมต่างๆ ที่เกิดขึ้นพร้อมกันในหน้าจอล่าสุด
ในรุ่นก่อนๆ หน้าจอล่าสุดจะแสดงงานได้เพียงรายการเดียวสำหรับแต่ละแอปที่ผู้ใช้โต้ตอบด้วยล่าสุด ตอนนี้แอปของคุณเปิดงานได้มากขึ้นตามที่จำเป็นสำหรับกิจกรรมเพิ่มเติมที่ทำงานพร้อมกันสำหรับเอกสาร ฟีเจอร์นี้ช่วยให้ทำงานหลายอย่างพร้อมกันได้ง่ายขึ้นโดยอนุญาตให้ผู้ใช้สลับไปมาระหว่างกิจกรรมและเอกสารแต่ละรายการจากหน้าจอล่าสุดได้อย่างรวดเร็ว พร้อมทั้งมอบประสบการณ์การสลับที่สม่ำเสมอในทุกแอป
ตัวอย่างของงานที่ทำงานพร้อมกัน เช่น แท็บที่เปิดอยู่ในแอปเว็บเบราว์เซอร์ เอกสารในแอปเพื่อการทำงาน การแข่งขันที่ดำเนินอยู่พร้อมกันในเกม หรือแชทในแอปการรับส่งข้อความ แอปของคุณจัดการงานได้ผ่านคลาส ActivityManager.AppTask
หากต้องการแทรกช่วงพักเชิงตรรกะเพื่อให้ระบบถือว่ากิจกรรมของคุณเป็นงานใหม่ ให้ใช้ FLAG_ACTIVITY_NEW_DOCUMENT
เมื่อเปิดกิจกรรมด้วย startActivity()
คุณยังใช้ลักษณะการทํางานนี้ได้โดยการตั้งค่าแอตทริบิวต์ documentLaunchMode
ขององค์ประกอบ <activity> เป็น "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 อาจแสดงการแจ้งเตือนที่แจ้งว่า "คุณมีข้อความใหม่ 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 Extension Pack
นอกจาก OpenGL ES 3.1 แล้ว เวอร์ชันนี้ยังมีแพ็กเกจส่วนขยายที่มีอินเทอร์เฟซ Java และการรองรับฟังก์ชันกราฟิกขั้นสูงในตัว Android จะถือว่าส่วนขยายเหล่านี้เป็นแพ็กเกจเดียว (หากมีชิ้นงาน ANDROID_extension_pack_es31a
แอปจะถือว่ามีชิ้นงานทั้งหมดในแพ็กเกจและเปิดใช้ฟีเจอร์ภาษาแรเงาด้วยคำสั่ง #extension
คำสั่งเดียว)
แพ็กเกจส่วนขยายรองรับรายการต่อไปนี้
- การรับประกันการรองรับ Fragment Shape สำหรับบัฟเฟอร์พื้นที่เก็บข้อมูลเฉดสี รูปภาพ และ Atomics (มีการรองรับตัวปรับแต่ง Fragment ด้วยหรือไม่ก็ได้ใน OpenGL ES 3.1)
- เทสเซลเลชันและชิดเดอร์เรขาคณิต
- รูปแบบการบีบอัดพื้นผิว ASTC (LDR)
- การประมาณค่าในช่วงและการลงสีตามตัวอย่าง
- โหมดการผสมที่แตกต่างกันสำหรับไฟล์แนบสีแต่ละรายการในเฟรมบัฟเฟอร์
อินเทอร์เฟซ Java สำหรับแพ็กส่วนขยายมาพร้อมกับ GLES31Ext
ในไฟล์ Manifest ของแอป คุณประกาศว่าต้องติดตั้งแอปเฉพาะในอุปกรณ์ที่รองรับชุดส่วนขยายเท่านั้น
เช่น
<manifest> <uses-feature android:name=“android.hardware.opengles.aep” android:required="true" /> ... </manifest>
สื่อ
Camera API สำหรับความสามารถขั้นสูงของกล้อง
Android 5.0 เปิดตัว API ใหม่ android.hardware.camera2 เพื่ออำนวยความสะดวกในการจับภาพและประมวลผลรูปภาพอย่างละเอียด ตอนนี้คุณสามารถเข้าถึงอุปกรณ์กล้องที่ใช้งานได้กับระบบด้วยโปรแกรมด้วย getCameraIdList()
และเชื่อมต่อกับอุปกรณ์ที่ต้องการด้วย openCamera()
หากต้องการเริ่มจับภาพ ให้สร้างCameraCaptureSession
และระบุออบเจ็กต์ Surface
เพื่อส่งรูปภาพที่จับภาพ
คุณกำหนดค่า CameraCaptureSession
ให้ถ่ายช็อตเดียวหรือหลายรูปในภาพถ่ายอัจฉริยะได้
หากต้องการรับการแจ้งเตือนเมื่อมีการจับภาพรูปภาพใหม่ ให้ใช้ CameraCaptureSession.CaptureCallback
listener และตั้งค่าในคำขอจับภาพ เมื่อระบบส่งคำขอจับภาพเรียบร้อยแล้ว ผู้ฟัง CameraCaptureSession.CaptureCallback
จะได้รับการเรียกไปยัง 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 มอบความสามารถในการเรียกดูคลังเนื้อหาสื่อของแอปอื่นผ่าน API android.media.browse สำหรับแอป หากต้องการแสดงเนื้อหาสื่อในแอป ให้ขยายคลาส MediaBrowserService
การติดตั้งใช้งาน MediaBrowserService
ควรให้สิทธิ์เข้าถึง MediaSession.Token
เพื่อให้แอปเล่นเนื้อหาสื่อที่ให้บริการผ่านบริการของคุณได้
หากต้องการโต้ตอบกับบริการเบราว์เซอร์สื่อ ให้ใช้คลาส MediaBrowser
ระบุชื่อคอมโพเนนต์สำหรับ MediaSession
เมื่อสร้างอินสแตนซ์ MediaBrowser
เมื่อใช้อินสแตนซ์ของเบราว์เซอร์ดังกล่าว แอปจะเชื่อมต่อกับบริการที่เกี่ยวข้องและรับออบเจ็กต์ MediaSession.Token
เพื่อเล่นเนื้อหาที่เปิดเผยผ่านบริการนั้นได้
พื้นที่เก็บข้อมูล
การเลือกไดเรกทอรี
Android 5.0 ขยายเฟรมเวิร์กการเข้าถึงพื้นที่เก็บข้อมูลเพื่อให้ผู้ใช้เลือกทั้งซับไดเรกทอรีได้ ซึ่งจะให้สิทธิ์แอปอ่าน/เขียนเอกสารทั้งหมดที่อยู่ในไดเรกทอรีนั้นโดยไม่ต้องมีการยืนยันจากผู้ใช้สำหรับแต่ละรายการ
หากต้องการเลือกแผนผังย่อยของไดเรกทอรี ให้สร้างและส่งความตั้งใจ OPEN_DOCUMENT_TREE
ระบบจะแสดง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 หรือเครือข่ายการเรียกเก็บเงินของผู้ให้บริการ หรือเมื่อคุณต้องการส่งข้อมูลโดยใช้โปรโตคอลการรับส่งข้อมูลประเภทใดประเภทหนึ่ง
หากต้องการเลือกและเชื่อมต่อกับเครือข่ายแบบไดนามิกจากแอป ให้ทำตามขั้นตอนต่อไปนี้
- สร้าง
ConnectivityManager
- ใช้คลาส
NetworkRequest.Builder
เพื่อสร้างออบเจ็กต์NetworkRequest
และระบุฟีเจอร์เครือข่ายและประเภทการขนส่งที่แอปสนใจ - หากต้องการสแกนหาเครือข่ายที่เหมาะสม ให้เรียกใช้
requestNetwork()
หรือregisterNetworkCallback()
แล้วส่งออบเจ็กต์NetworkRequest
และการใช้งานConnectivityManager.NetworkCallback
โปรดใช้เมธอดrequestNetwork()
หากต้องการเปลี่ยนไปใช้เครือข่ายที่เหมาะสมเมื่อตรวจพบเครือข่าย ในการรับเฉพาะการแจ้งเตือนสำหรับเครือข่ายที่สแกนโดยไม่ต้องเปลี่ยนอุปกรณ์ตลอดเวลา ให้ใช้เมธอดregisterNetworkCallback()
แทน
เมื่อระบบตรวจพบเครือข่ายที่เหมาะสม ระบบจะเชื่อมต่อกับเครือข่ายและเรียกให้ onAvailable()
Callback คุณสามารถใช้ออบเจ็กต์ Network
จาก Callback เพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับเครือข่ายหรือเพื่อกำหนดเส้นทางการรับส่งข้อมูลไปใช้เครือข่ายที่เลือกได้
บลูทูธพลังงานต่ำ
Android 4.3 เปิดตัวการรองรับแพลตฟอร์มสำหรับ บลูทูธพลังงานต่ำ (Bluetooth LE) ซึ่งมีบทบาทหลัก ใน Android 5.0 อุปกรณ์ Android สามารถทำหน้าที่เป็นอุปกรณ์ต่อพ่วงบลูทูธ LE แอปสามารถใช้ความสามารถนี้ ในการทำให้อุปกรณ์ที่อยู่ใกล้เคียงทราบว่ามีแอปอยู่แล้ว เช่น คุณสามารถสร้างแอปที่ช่วยให้อุปกรณ์ทํางานเป็นเครื่องนับก้าวหรือเครื่องวัดสุขภาพ และสื่อสารข้อมูลกับอุปกรณ์ Bluetooth LE เครื่องอื่นได้
android.bluetooth.le
API ใหม่ช่วยให้แอปของคุณสามารถกระจายโฆษณา สแกนหาการตอบกลับ และสร้างการเชื่อมต่อกับอุปกรณ์บลูทูธ LE ที่อยู่ใกล้เคียง หากต้องการใช้ฟีเจอร์โฆษณาและการสแกนใหม่ ให้เพิ่มสิทธิ์ BLUETOOTH_ADMIN
ในไฟล์ Manifest เมื่อผู้ใช้อัปเดตหรือดาวน์โหลดแอปของคุณจาก Play Store ระบบจะขอให้ผู้ใช้ให้สิทธิ์แก่แอปของคุณดังต่อไปนี้
"ข้อมูลการเชื่อมต่อบลูทูธ: อนุญาตให้แอปควบคุมบลูทูธ
ซึ่งรวมถึงการประกาศหรือการรับข้อมูลเกี่ยวกับอุปกรณ์บลูทูธที่อยู่ใกล้เคียง"
หากต้องการเริ่มการโฆษณา Bluetooth LE เพื่อให้อุปกรณ์อื่นๆ ค้นพบแอปของคุณได้ โปรดโทร startAdvertising()
แล้วติดตั้งใช้งานคลาส AdvertiseCallback
ออบเจ็กต์ Callback จะได้รับรายงานความสำเร็จหรือความล้มเหลวของการดำเนินการโฆษณา
Android 5.0 เปิดตัวคลาส ScanFilter
เพื่อให้แอปสแกนหาเฉพาะอุปกรณ์ประเภทที่สนใจได้ หากต้องการเริ่มสแกนหาอุปกรณ์ Bluetooth LE ให้โทรหา startScan()
และส่งในรายการตัวกรอง ในการเรียกใช้เมธอด คุณต้องติดตั้งใช้งาน ScanCallback
ด้วยเพื่อรายงานเมื่อพบโฆษณา Bluetooth LE
การปรับปรุง NFC
Android 5.0 เพิ่มการเพิ่มประสิทธิภาพเหล่านี้เพื่อให้ใช้งาน NFC ได้กว้างและยืดหยุ่นมากขึ้น
- ตอนนี้ Android Beam พร้อมใช้งานในเมนูแชร์แล้ว
- แอปของคุณสามารถเรียกใช้ 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>
คุณสามารถใช้เครื่องมือBattery Historian ในเอาต์พุตของคำสั่ง 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
- ตอนนี้บริการการช่วยเหลือพิเศษและเครื่องมือทดสอบที่ใช้ Accessibility API (เช่น
UiAutomator
) สามารถดึงข้อมูลโดยละเอียดเกี่ยวกับพร็อพเพอร์ตี้ของหน้าต่างบนหน้าจอที่ผู้ใช้ที่มองเห็นได้โต้ตอบด้วย หากต้องการเรียกข้อมูลรายการออบเจ็กต์AccessibilityWindowInfo
ให้เรียกใช้เมธอดgetWindows()
ใหม่ - คลาส
AccessibilityNodeInfo.AccessibilityAction
แบบใหม่ช่วยให้คุณกำหนดการดำเนินการมาตรฐานหรือการดำเนินการที่กําหนดเองเพื่อดําเนินการกับAccessibilityNodeInfo
ได้ คลาสAccessibilityNodeInfo.AccessibilityAction
ใหม่จะแทนที่ API ที่เกี่ยวข้องกับการดำเนินการซึ่งพบก่อนหน้านี้ในAccessibilityNodeInfo
- Android 5.0 ให้การควบคุมการสังเคราะห์การอ่านออกเสียงข้อความในแอปอย่างละเอียดขึ้น คลาส
Voice
ใหม่ช่วยให้แอปใช้โปรไฟล์เสียงที่เชื่อมโยงกับภาษา คุณภาพและการให้คะแนนเวลาในการตอบสนอง และพารามิเตอร์เฉพาะสำหรับเครื่องมืออ่านออกเสียงข้อความได้
IME
สลับระหว่างภาษาในการป้อนข้อมูลได้ง่ายขึ้น
ตั้งแต่ Android 5.0 เป็นต้นไป ผู้ใช้จะสลับระหว่างเครื่องมือแก้ไขวิธีการป้อนข้อมูล (IME) ทั้งหมดที่แพลตฟอร์มรองรับได้ง่ายขึ้น การดำเนินการสลับที่กำหนด (โดยปกติคือการแตะไอคอนลูกโลกบนแป้นพิมพ์บนหน้าจอ) จะวนไปยัง IME ทั้งหมดดังกล่าว การเปลี่ยนแปลงลักษณะการทํางานนี้ใช้วิธี shouldOfferSwitchingToNextInputMethod()
นอกจากนี้ ปัจจุบันเฟรมเวิร์กจะตรวจสอบว่า IME ถัดไปมีกลไกการสลับหรือไม่ (และด้วยเหตุนี้ IME นั้นรองรับการเปลี่ยนไปใช้ IME หรือไม่หลังจากนั้น) IME ที่มีกลไกการเปลี่ยนจะไม่วนไปยัง IME ที่ไม่มีกลไกดังกล่าว การเปลี่ยนแปลงลักษณะการทำงานนี้จะดำเนินการโดยเมธอด switchToNextInputMethod()
หากต้องการดูตัวอย่างวิธีใช้ API การสลับ IME ที่อัปเดตแล้ว โปรดดูตัวอย่างการใช้งานแป้นพิมพ์เสมือนที่อัปเดตในรุ่นนี้ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้การสลับระหว่าง IME ได้ที่การสร้างวิธีการป้อนข้อมูล
การประกาศไฟล์ Manifest
ฟีเจอร์ที่จำเป็นที่ต้องประกาศ
ตอนนี้ระบบรองรับค่าต่อไปนี้ในองค์ประกอบ
<uses-feature>
แล้ว เพื่อให้มั่นใจว่าแอปจะติดตั้งในอุปกรณ์ที่มีฟีเจอร์ที่แอปต้องการเท่านั้น
FEATURE_AUDIO_OUTPUT
FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING
FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR
FEATURE_CAMERA_CAPABILITY_RAW
FEATURE_CAMERA_LEVEL_FULL
FEATURE_GAMEPAD
FEATURE_LIVE_TV
FEATURE_MANAGED_USERS
FEATURE_LEANBACK
FEATURE_OPENGLES_EXTENSION_PACK
FEATURE_SECURELY_REMOVES_USERS
FEATURE_SENSOR_AMBIENT_TEMPERATURE
FEATURE_SENSOR_HEART_RATE_ECG
FEATURE_SENSOR_RELATIVE_HUMIDITY
FEATURE_VERIFIED_BOOT
FEATURE_WEBVIEW
สิทธิ์ของผู้ใช้
ตอนนี้ระบบรองรับสิทธิ์ต่อไปนี้ในองค์ประกอบ <uses-permission>
เพื่อประกาศสิทธิ์ที่แอปของคุณต้องใช้ในการเข้าถึง API บางรายการแล้ว
BIND_DREAM_SERVICE
: เมื่อกำหนดเป้าหมายเป็น API ระดับ 21 ขึ้นไป บริการ Daydream จะต้องใช้สิทธิ์นี้เพื่อให้แน่ใจว่ามีเพียงระบบเท่านั้นที่จะเชื่อมโยงได้