ระดับ 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 หรือเครือข่ายการเรียกเก็บเงินผ่านผู้ให้บริการมือถือ หรือหากคุณต้องการส่งข้อมูลโดยใช้โปรโตคอลรับส่งข้อมูลชนิดใดชนิดหนึ่งโดยเฉพาะ
หากต้องการเลือกและเชื่อมต่อเครือข่ายจากแอปแบบไดนามิก ให้ทำตามขั้นตอนต่อไปนี้ ขั้นตอน:
- สร้าง
ConnectivityManager
- ใช้คลาส
NetworkRequest.Builder
เพื่อสร้างออบเจ็กต์NetworkRequest
และระบุฟีเจอร์เครือข่ายและประเภทการขนส่งที่แอปสนใจ - หากต้องการสแกนหาเครือข่ายที่เหมาะสม ให้เรียกใช้
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>
เพื่อให้มั่นใจว่าแอปของคุณติดตั้งในอุปกรณ์ที่
นำเสนอฟีเจอร์ที่แอปของคุณต้องการ
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 จะต้องได้รับสิทธิ์นี้เพื่อให้มั่นใจว่ามีเพียงระบบเท่านั้นที่จะเชื่อมโยงกับบริการได้