Android 6.0 (M) มีฟีเจอร์ใหม่สำหรับผู้ใช้และนักพัฒนาแอป เอกสารนี้จะแนะนำ API ที่โดดเด่นที่สุด
เริ่มพัฒนา
หากต้องการเริ่มสร้างแอปสำหรับ Android 6.0 คุณต้องดาวน์โหลด Android SDK ก่อน จากนั้นใช้ เครื่องมือจัดการ SDK เพื่อดาวน์โหลดแพลตฟอร์ม SDK และอิมเมจระบบของ Android 6.0
อัปเดตระดับ API เป้าหมาย
หากต้องการเพิ่มประสิทธิภาพแอปสำหรับอุปกรณ์ที่ใช้ Android ให้ดียิ่งขึ้น
ให้ตั้งค่า targetSdkVersion เป็น
"23" ติดตั้งแอปในอิมเมจระบบ Android ทดสอบ แล้วเผยแพร่แอปที่อัปเดตแล้วพร้อม
การเปลี่ยนแปลงนี้
คุณสามารถใช้ Android API พร้อมทั้งรองรับเวอร์ชันเก่ากว่า
ได้โดยการเพิ่มเงื่อนไขลงในโค้ดเพื่อตรวจสอบระดับ API ของระบบ
ก่อนที่จะเรียกใช้ API ที่ minSdkVersion ไม่รองรับ
ดูข้อมูลเพิ่มเติมเกี่ยวกับการรักษาความเข้ากันได้แบบย้อนกลับได้ที่การรองรับ
แพลตฟอร์มเวอร์ชันต่างๆ
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีการทำงานของระดับ API ได้ที่ระดับ API คืออะไร
การตรวจสอบสิทธิ์ด้วยลายนิ้วมือ
การเปิดตัวนี้มี API ใหม่ที่ช่วยให้คุณตรวจสอบสิทธิ์ผู้ใช้ได้โดยใช้การสแกนลายนิ้วมือใน อุปกรณ์ที่รองรับ ใช้ API เหล่านี้ร่วมกับ ระบบ Android Keystore
หากต้องการตรวจสอบสิทธิ์ผู้ใช้ผ่านการสแกนลายนิ้วมือ ให้รับอินสแตนซ์ของคลาส
FingerprintManager ใหม่และเรียกใช้เมธอด
authenticate()
แอปของคุณต้องทำงานบนอุปกรณ์ที่เข้ากันได้
ซึ่งมีเซ็นเซอร์ลายนิ้วมือ คุณต้องติดตั้งใช้งานอินเทอร์เฟซผู้ใช้สำหรับขั้นตอนการตรวจสอบสิทธิ์ด้วยลายนิ้วมือในแอป และใช้ไอคอนลายนิ้วมือมาตรฐานของ Android ใน UI
ไอคอนลายนิ้วมือของ Android (c_fp_40px.png) จะรวมอยู่ใน
ตัวอย่างการตรวจสอบสิทธิ์ด้วยข้อมูลไบโอเมตริก
หากคุณกำลังพัฒนาแอปหลายแอปที่ใช้การตรวจสอบสิทธิ์ด้วยลายนิ้วมือ โปรดทราบว่าแต่ละแอปต้อง
ตรวจสอบสิทธิ์ลายนิ้วมือของผู้ใช้แยกกัน
หากต้องการใช้ฟีเจอร์นี้ในแอป ให้เพิ่มสิทธิ์
USE_FINGERPRINT ในไฟล์ Manifest ก่อน
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
หากต้องการดูการติดตั้งใช้งานการตรวจสอบสิทธิ์ด้วยลายนิ้วมือในแอป โปรดดูตัวอย่างการตรวจสอบสิทธิ์ด้วยข้อมูลไบโอเมตริก หากต้องการดูตัวอย่างวิธีใช้ API การตรวจสอบสิทธิ์เหล่านี้ร่วมกับ Android API อื่นๆ โปรดดูวิดีโอ Fingerprint และ Payment API
หากคุณกำลังทดสอบฟีเจอร์นี้ ให้ทำตามขั้นตอนต่อไปนี้
- ติดตั้ง Android SDK Tools เวอร์ชัน 24.3 หากยังไม่ได้ติดตั้ง
- ลงทะเบียนลายนิ้วมือใหม่ในโปรแกรมจำลองโดยไปที่ การตั้งค่า > ความปลอดภัย > ลายนิ้วมือ แล้วทำตามวิธีการลงทะเบียน
- ใช้โปรแกรมจำลองเพื่อจำลองเหตุการณ์การแตะด้วยลายนิ้วมือด้วยคำสั่งต่อไปนี้
ใช้คำสั่งเดียวกันเพื่อจำลองเหตุการณ์การแตะด้วยลายนิ้วมือบนหน้าจอล็อกหรือ
ในแอป
adb -e emu finger touch <finger_id>
ใน Windows คุณอาจต้องเรียกใช้
telnet 127.0.0.1 <emulator-id>ตามด้วยfinger touch <finger_id>
ยืนยันข้อมูลเข้าสู่ระบบ
แอปของคุณสามารถตรวจสอบสิทธิ์ผู้ใช้ตามเวลาล่าสุดที่ผู้ใช้ปลดล็อกอุปกรณ์ ฟีเจอร์นี้ช่วยให้ผู้ใช้ไม่ต้องจดจำรหัสผ่านเพิ่มเติมสำหรับแอปแต่ละแอป และช่วยให้คุณไม่ต้อง ติดตั้งใช้งานอินเทอร์เฟซผู้ใช้สำหรับการตรวจสอบสิทธิ์ของคุณเอง แอปของคุณควรใช้ฟีเจอร์นี้ร่วมกับการติดตั้งใช้งานคีย์สาธารณะหรือคีย์ลับสำหรับการตรวจสอบสิทธิ์ผู้ใช้
หากต้องการตั้งค่าระยะหมดเวลาที่สามารถนำคีย์เดียวกันกลับมาใช้ใหม่ได้หลังจากที่ผู้ใช้ได้รับการตรวจสอบสิทธิ์สำเร็จ
ให้เรียกใช้เมธอดใหม่ setUserAuthenticationValidityDurationSeconds()
เมื่อตั้งค่า KeyGenerator หรือ
KeyPairGenerator
หลีกเลี่ยงการแสดงกล่องโต้ตอบการตรวจสอบสิทธิ์ซ้ำมากเกินไป โดยแอปควรลองใช้ออบเจ็กต์การเข้ารหัสก่อน และหากหมดเวลา ให้ใช้เมธอด createConfirmDeviceCredentialIntent()
เพื่อตรวจสอบสิทธิ์ผู้ใช้ซ้ำภายในแอป
การลิงก์แอป
การเปิดตัวนี้ช่วยเพิ่มประสิทธิภาพระบบ Intent ของ Android ด้วยการลิงก์แอปที่มีประสิทธิภาพมากขึ้น ฟีเจอร์นี้ช่วยให้คุณเชื่อมโยงแอปกับโดเมนเว็บที่คุณเป็นเจ้าของได้ การเชื่อมโยงนี้ช่วยให้แพลตฟอร์มกำหนดแอปเริ่มต้นที่จะใช้จัดการเว็บลิงก์หนึ่งๆ ได้ และข้ามการแจ้งให้ผู้ใช้เลือกแอปได้ หากต้องการดูวิธีใช้ฟีเจอร์นี้ โปรดดูการจัดการ App Link
การสำรองข้อมูลแอปอัตโนมัติ
ตอนนี้ระบบจะทำการสำรองข้อมูลทั้งหมดและกู้คืนข้อมูลสำหรับแอปโดยอัตโนมัติ แอปของคุณต้องกำหนดเป้าหมายเป็น Android 6.0 (ระดับ API 23) เพื่อเปิดใช้ลักษณะการทำงานนี้ โดยที่คุณไม่ต้องเพิ่มโค้ดใดๆ เพิ่มเติม หากผู้ใช้ลบบัญชี Google ระบบจะลบข้อมูลสำรองของผู้ใช้ด้วย ดูวิธีทำงานของฟีเจอร์นี้และวิธีกำหนดค่าสิ่งที่ต้องการสำรองข้อมูลในระบบไฟล์ได้ที่การกำหนดค่าการสำรองข้อมูลอัตโนมัติสำหรับแอป
Direct Share
การเปิดตัวนี้มี API ที่ช่วยให้ผู้ใช้แชร์ได้อย่างรวดเร็วและง่ายดาย ตอนนี้คุณสามารถ กำหนดเป้าหมายการแชร์โดยตรงที่เปิดใช้กิจกรรมที่เฉพาะเจาะจงในแอปได้แล้ว โดยเป้าหมายการแชร์โดยตรงเหล่านี้จะแสดงต่อผู้ใช้ผ่านเมนูแชร์ ฟีเจอร์นี้ช่วยให้ผู้ใช้แชร์ เนื้อหากับเป้าหมาย เช่น รายชื่อติดต่อ ภายในแอปอื่นๆ ได้ เช่น เป้าหมายการแชร์โดยตรงอาจ เปิดใช้งานในแอปโซเชียลเน็ตเวิร์กอื่น ซึ่งช่วยให้ผู้ใช้แชร์เนื้อหากับเพื่อนหรือชุมชนที่เฉพาะเจาะจงในแอปนั้นได้โดยตรง
หากต้องการเปิดใช้เป้าหมายการแชร์โดยตรง คุณต้องกำหนดคลาสที่ขยาย
ChooserTargetServiceคลาส ประกาศบริการในไฟล์ Manifest ในการประกาศดังกล่าว ให้ระบุ
BIND_CHOOSER_TARGET_SERVICE สิทธิ์และ
ตัวกรอง Intent โดยใช้การดำเนินการ
SERVICE_INTERFACE
ตัวอย่างต่อไปนี้แสดงวิธีประกาศ ChooserTargetService ในไฟล์ Manifest
<service android:name=".ChooserTargetService" android:label="@string/service_name" android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE"> <intent-filter> <action android:name="android.service.chooser.ChooserTargetService" /> </intent-filter> </service>
สําหรับกิจกรรมแต่ละรายการที่คุณต้องการแสดงต่อ
ChooserTargetService ให้เพิ่มองค์ประกอบ
<meta-data>ที่มีชื่อ
"android.service.chooser.chooser_target_service" ในไฟล์ Manifest ของแอป
<activity android:name=".MyShareActivity” android:label="@string/share_activity_label"> <intent-filter> <action android:name="android.intent.action.SEND" /> </intent-filter> <meta-data android:name="android.service.chooser.chooser_target_service" android:value=".ChooserTargetService" /> </activity>
การโต้ตอบด้วยเสียง
การเปิดตัวนี้มี API การโต้ตอบด้วยเสียงใหม่ ซึ่งเมื่อใช้ร่วมกับการดำเนินการด้วยเสียง
จะช่วยให้คุณสร้างประสบการณ์การสนทนาด้วยเสียงลงในแอปได้ เรียกใช้เมธอด
isVoiceInteraction() เพื่อตรวจสอบว่าการดำเนินการด้วยเสียงเรียกใช้
กิจกรรมของคุณหรือไม่ หากเป็นเช่นนั้น แอปของคุณจะใช้คลาส
VoiceInteractor เพื่อขอการยืนยันด้วยเสียงจากผู้ใช้ เลือก
จากรายการตัวเลือก และอื่นๆ ได้
การโต้ตอบด้วยเสียงส่วนใหญ่เกิดจากการดำเนินการด้วยเสียงของผู้ใช้ อย่างไรก็ตาม กิจกรรมการโต้ตอบด้วยเสียงยังเริ่มได้โดยไม่ต้องป้อนข้อมูลจากผู้ใช้ด้วย เช่น แอปอื่นที่เปิดผ่านการโต้ตอบด้วยเสียงก็สามารถส่ง Intent เพื่อเปิดการโต้ตอบด้วยเสียงได้เช่นกัน หากต้องการตรวจสอบว่ากิจกรรมของคุณ
เปิดจากคำค้นหาด้วยเสียงของผู้ใช้หรือจากแอปการโต้ตอบด้วยเสียงอื่น ให้เรียกใช้เมธอด isVoiceInteractionRoot() หากแอปอื่นเปิดใช้งาน
กิจกรรมของคุณ เมธอดจะแสดงผล false จากนั้นแอปอาจแจ้งให้ผู้ใช้ยืนยันว่า
ต้องการดำเนินการนี้
ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้การดำเนินการด้วยเสียงได้ที่เว็บไซต์สำหรับนักพัฒนาแอปการดำเนินการด้วยเสียง
Assist API
การเปิดตัวนี้จะมอบวิธีใหม่ให้ผู้ใช้มีส่วนร่วมกับแอปของคุณผ่านผู้ช่วย หากต้องการใช้ฟีเจอร์นี้ ผู้ใช้ต้องเปิดใช้ผู้ช่วยให้ใช้บริบทปัจจุบันได้ เมื่อเปิดใช้แล้ว ผู้ใช้จะเรียกใช้ผู้ช่วยภายในแอปใดก็ได้โดยกดปุ่มหน้าแรกค้างไว้
แอปของคุณสามารถเลือกที่จะไม่แชร์บริบทปัจจุบันกับผู้ช่วยได้โดยการตั้งค่าแฟล็ก FLAG_SECURE นอกเหนือจากชุดข้อมูลมาตรฐานที่แพลตฟอร์มส่งไปยังผู้ช่วยแล้ว แอปของคุณยังแชร์ข้อมูลเพิ่มเติมได้โดยใช้คลาส AssistContent ใหม่
หากต้องการให้บริบทเพิ่มเติมจากแอปแก่ผู้ช่วย ให้ทำตามขั้นตอนต่อไปนี้
- ใช้
Application.OnProvideAssistDataListenerอินเทอร์เฟซ - ลงทะเบียน Listener นี้โดยใช้
registerOnProvideAssistDataListener() - หากต้องการให้ข้อมูลตามบริบทที่เฉพาะเจาะจงกับกิจกรรม ให้ลบล้าง
onProvideAssistData()การเรียกกลับ และการเรียกกลับใหม่onProvideAssistContent()(ไม่บังคับ)
อุปกรณ์พื้นที่เก็บข้อมูลแบบ Adoptable
ในการเปิดตัวครั้งนี้ ผู้ใช้จะนำมาใช้อุปกรณ์จัดเก็บข้อมูลภายนอก เช่น การ์ด SD ได้ การใช้อุปกรณ์จัดเก็บข้อมูลภายนอกจะเข้ารหัสและฟอร์แมตอุปกรณ์ให้ทำงานเหมือนที่จัดเก็บข้อมูลภายใน ฟีเจอร์นี้ช่วยให้ผู้ใช้ย้ายทั้งแอปและข้อมูลส่วนตัวของแอปเหล่านั้นระหว่างอุปกรณ์จัดเก็บข้อมูลได้ เมื่อ
ย้ายแอป ระบบจะใช้ค่ากำหนด
android:installLocation
ในไฟล์ Manifest
หากแอปของคุณเข้าถึง API หรือฟิลด์ต่อไปนี้ โปรดทราบว่าเส้นทางไฟล์ที่ API หรือฟิลด์เหล่านั้นแสดงผล จะเปลี่ยนแปลงแบบไดนามิกเมื่อย้ายแอปไปมาระหว่างอุปกรณ์จัดเก็บข้อมูลภายในและภายนอก เมื่อสร้างเส้นทางไฟล์ เราขอแนะนำอย่างยิ่งให้คุณเรียกใช้ API เหล่านี้แบบไดนามิกเสมอ อย่าใช้เส้นทางไฟล์ที่ฮาร์ดโค้ดหรือคงเส้นทางไฟล์แบบเต็มที่สร้างไว้ก่อนหน้านี้
ContextวิธีการApplicationInfoฟิลด์
หากต้องการแก้ไขข้อบกพร่องของฟีเจอร์นี้ คุณสามารถเปิดใช้การนำไดรฟ์ USB ที่ เชื่อมต่อกับอุปกรณ์ Android ผ่านสาย USB On-The-Go (OTG) มาใช้ได้โดยเรียกใช้คำสั่งนี้
$ adb shell sm set-force-adoptable true
การแจ้งเตือน
การเปิดตัวนี้จะเพิ่มการเปลี่ยนแปลง API ต่อไปนี้สำหรับการแจ้งเตือน
- ระดับตัวกรอง
INTERRUPTION_FILTER_ALARMSใหม่ที่ สอดคล้องกับโหมดอย่ารบกวน เฉพาะการปลุกใหม่ - ค่าหมวดหมู่
CATEGORY_REMINDERใหม่ที่ใช้เพื่อ แยกความแตกต่างระหว่างการช่วยเตือนที่ผู้ใช้กำหนดเวลากับกิจกรรมอื่นๆ (CATEGORY_EVENT) และการปลุก (CATEGORY_ALARM) Iconคลาสใหม่ที่คุณแนบไปกับการแจ้งเตือนได้ ผ่านวิธีsetSmallIcon()และsetLargeIcon()ในทำนองเดียวกัน ตอนนี้เมธอดaddAction()จะยอมรับออบเจ็กต์Iconแทนที่จะเป็นรหัสทรัพยากร DrawablegetActiveNotifications()วิธีการใหม่ที่ช่วยให้แอปของคุณ ทราบว่าการแจ้งเตือนใดที่ยังใช้งานได้ในขณะนี้
รองรับสไตลัสบลูทูธ
รุ่นนี้มีการรองรับข้อมูลจากผู้ใช้ที่ดียิ่งขึ้นโดยใช้สไตลัสบลูทูธ ผู้ใช้สามารถจับคู่
และเชื่อมต่อสไตลัสบลูทูธที่รองรับกับโทรศัพท์หรือแท็บเล็ตได้ ขณะเชื่อมต่อ ข้อมูลตำแหน่ง
จากหน้าจอสัมผัสจะผสานรวมกับข้อมูลแรงกดและปุ่มจากสไตลัสเพื่อ
ให้แสดงออกได้หลากหลายกว่าการใช้หน้าจอสัมผัสเพียงอย่างเดียว แอปของคุณสามารถรอฟังการกดปุ่มสไตลัสและดำเนินการรองได้โดยการลงทะเบียนออบเจ็กต์ View.OnContextClickListener และ GestureDetector.OnContextClickListener ในกิจกรรม
ใช้MotionEventวิธีการและค่าคงที่เพื่อตรวจหาการโต้ตอบของปุ่มสไตลัส
- หากผู้ใช้แตะสไตลัสที่มีปุ่มบนหน้าจอแอปของคุณ เมธอด
getTooltype()จะแสดงผลTOOL_TYPE_STYLUS - สำหรับแอปที่กำหนดเป้าหมายเป็น Android 6.0 (ระดับ API 23) เมธอด
getButtonState()จะแสดงผลBUTTON_STYLUS_PRIMARYเมื่อผู้ใช้ กดปุ่มสไตลัสหลัก หากสไตลัสมีปุ่มที่ 2 เมธอดเดียวกันจะแสดงผลBUTTON_STYLUS_SECONDARYเมื่อผู้ใช้กดปุ่ม หากผู้ใช้กดปุ่มทั้ง 2 ปุ่มพร้อมกัน เมธอดจะแสดงผลค่าทั้ง 2 ค่าที่ OR กัน (BUTTON_STYLUS_PRIMARY|BUTTON_STYLUS_SECONDARY) -
สำหรับแอปที่กำหนดเป้าหมายเป็นแพลตฟอร์มเวอร์ชันที่ต่ำกว่า
getButtonState()เมธอดจะแสดงผลBUTTON_SECONDARY(สำหรับการกดปุ่มสไตลัสหลัก),BUTTON_TERTIARY(สำหรับการกดปุ่มสไตลัสรอง) หรือทั้ง 2 อย่าง
ปรับปรุงการสแกนหาบลูทูธพลังงานต่ำ
หากแอปทำการสแกนบลูทูธพลังงานต่ำ ให้ใช้เมธอดใหม่
setCallbackType()
เพื่อระบุว่าคุณต้องการให้ระบบแจ้งการเรียกกลับเมื่อพบหรือเห็นแพ็กเก็ตโฆษณาที่ตรงกับชุด ScanFilter เป็นครั้งแรกหรือหลังจากผ่านไปเป็นเวลานาน วิธีสแกนนี้ประหยัดพลังงานมากกว่าที่ระบุไว้ในแพลตฟอร์มเวอร์ชันก่อนหน้า
การรองรับ Hotspot 2.0 รุ่นที่ 1
การเปิดตัวนี้จะเพิ่มการรองรับข้อกำหนด Hotspot 2.0 รุ่นที่ 1 ในอุปกรณ์ Nexus 6 และ Nexus 9 หากต้องการจัดสรรข้อมูลเข้าสู่ระบบ Hotspot 2.0 ในแอป ให้ใช้วิธีการใหม่ของคลาส WifiEnterpriseConfig เช่น setPlmn() และ setRealm() ในออบเจ็กต์
WifiConfiguration คุณสามารถตั้งค่าฟิลด์
FQDN และ
providerFriendlyName ได้
isPasspointNetwork() วิธีใหม่จะระบุว่าเครือข่ายที่ตรวจพบเป็นจุดเข้าใช้งาน Hotspot 2.0 หรือไม่
โหมดการแสดงผลแบบ 4K
ตอนนี้แพลตฟอร์มอนุญาตให้แอปขออัปเกรดความละเอียดการแสดงผลเป็นการแสดงผล 4K
ในฮาร์ดแวร์ที่รองรับ หากต้องการค้นหาความละเอียดทางกายภาพปัจจุบัน ให้ใช้
Display.Mode API ใหม่ หาก UI วาดที่ความละเอียดเชิงตรรกะที่ต่ำกว่าและมีการ
อัปสเกลเป็นความละเอียดจริงที่สูงกว่า โปรดทราบว่าความละเอียดจริงที่เมธอด getPhysicalWidth() แสดงผลอาจแตกต่างจากความละเอียดเชิงตรรกะที่ getSize() รายงาน
คุณขอให้ระบบเปลี่ยนความละเอียดจริงในแอปขณะที่แอปทำงานได้โดยตั้งค่าพร็อพเพอร์ตี้ preferredDisplayModeId ของหน้าต่างแอป ฟีเจอร์นี้มีประโยชน์หากคุณต้องการเปลี่ยนไปใช้ความละเอียดการแสดงผล 4K ขณะอยู่ในโหมดแสดงผล 4K
ระบบจะยังคงแสดงผล UI ที่ความละเอียดเดิม (เช่น 1080p) และอัปสเกลเป็น 4K แต่SurfaceViewออบเจ็กต์อาจแสดงเนื้อหาที่ความละเอียดดั้งเดิม
ColorStateLists ที่กำหนดธีมได้
ตอนนี้ ColorStateList รองรับแอตทริบิวต์ธีมสำหรับอุปกรณ์ที่ใช้ Android 6.0 (ระดับ API 23) แล้ว เลิกใช้งานเมธอด
Resources.getColorStateList()และ
Resources.getColor()แล้ว หากคุณเรียกใช้ API เหล่านี้ ให้เรียกใช้เมธอดใหม่
Context.getColorStateList() หรือ
Context.getColor() แทน นอกจากนี้ วิธีการเหล่านี้ยังมีอยู่ในไลบรารี v4 appcompat ผ่าน ContextCompat ด้วย
ฟีเจอร์ด้านเสียง
รุ่นนี้มีการปรับปรุงการประมวลผลเสียงใน Android ซึ่งรวมถึงสิ่งต่อไปนี้
- รองรับโปรโตคอล MIDI
ด้วย
android.media.midiAPI ใหม่ ใช้ API เหล่านี้เพื่อส่งและรับเหตุการณ์ MIDI - คลาสใหม่
AudioRecord.BuilderและAudioTrack.Builderเพื่อสร้างออบเจ็กต์การจับภาพและการเล่นเสียงดิจิทัลตามลำดับ และกำหนดค่าพร็อพเพอร์ตี้แหล่งที่มาและปลายทางของเสียง เพื่อลบล้างค่าเริ่มต้นของระบบ - API Hook สำหรับเชื่อมโยงอุปกรณ์เสียงและอุปกรณ์อินพุต ซึ่งจะมีประโยชน์อย่างยิ่งหากแอปของคุณ
อนุญาตให้ผู้ใช้เริ่มการค้นหาด้วยเสียงจากเกมคอนโทรลเลอร์หรือรีโมตคอนโทรลที่เชื่อมต่อกับ Android
TV ระบบจะเรียกใช้แฮนเดิลใหม่
onSearchRequested()เมื่อผู้ใช้เริ่มการค้นหา หากต้องการตรวจสอบว่าอุปกรณ์ป้อนข้อมูลของผู้ใช้มี ไมโครโฟนในตัวหรือไม่ ให้เรียกออบเจ็กต์InputDeviceจากการเรียกกลับนั้น แล้วเรียกเมธอด newhasMicrophone() - เมธอด
getDevices()ใหม่ที่ช่วยให้คุณ ดึงรายการอุปกรณ์เสียงทั้งหมดที่เชื่อมต่อกับระบบในปัจจุบันได้ นอกจากนี้ คุณยังลงทะเบียนAudioDeviceCallbackออบเจ็กต์ได้หากต้องการให้ระบบแจ้งเตือนแอป เมื่ออุปกรณ์เสียงเชื่อมต่อหรือยกเลิกการเชื่อมต่อ
ฟีเจอร์วิดีโอ
การเปิดตัวนี้จะเพิ่มความสามารถใหม่ๆ ให้กับ API การประมวลผลวิดีโอ ซึ่งรวมถึง
- คลาส
MediaSyncใหม่ซึ่งช่วยให้แอปพลิเคชันแสดงผลสตรีมเสียงและวิดีโอพร้อมกันได้ ระบบจะส่งบัฟเฟอร์เสียงในลักษณะที่ไม่บล็อกและจะ ส่งคืนผ่านการเรียกกลับ นอกจากนี้ยังรองรับอัตราการเล่นแบบไดนามิกด้วย - เหตุการณ์
EVENT_SESSION_RECLAIMEDใหม่ ซึ่งบ่งชี้ว่าตัวจัดการทรัพยากรได้เรียกคืนเซสชันที่แอปเปิดแล้ว หากแอปใช้เซสชัน DRM คุณควรจัดการเหตุการณ์นี้และตรวจสอบว่าไม่ได้ใช้เซสชันที่เรียกคืน - รหัสข้อผิดพลาด
ERROR_RECLAIMEDใหม่ ซึ่งระบุว่า ตัวจัดการทรัพยากรได้เรียกคืนทรัพยากรสื่อที่ตัวแปลงรหัสใช้แล้ว ด้วยข้อยกเว้นนี้ จึงต้องปล่อยตัวแปลงรหัส เนื่องจากตัวแปลงรหัสได้เปลี่ยนไปอยู่ในสถานะสิ้นสุดแล้ว getMaxSupportedInstances()อินเทอร์เฟซใหม่เพื่อรับคำแนะนำเกี่ยวกับจำนวนสูงสุดของอินสแตนซ์ตัวแปลงรหัสพร้อมกันที่รองรับsetPlaybackParams()วิธีใหม่ในการตั้งค่าอัตราการเล่นสื่อสำหรับการเล่นแบบเร็วหรือ สโลว์โมชัน นอกจากนี้ ยังจะขยายหรือเร่งการเล่นเสียงโดยอัตโนมัติ พร้อมกับวิดีโอด้วย
ฟีเจอร์กล้อง
การเปิดตัวนี้มี API ใหม่ต่อไปนี้สำหรับการเข้าถึงไฟฉายของกล้องและสำหรับการ ประมวลผลรูปภาพของกล้องซ้ำ
Flashlight API
หากอุปกรณ์กล้องมีแฟลช คุณสามารถเรียกใช้เมธอด
setTorchMode()
เพื่อเปิดหรือปิดโหมดไฟฉายของแฟลชได้โดยไม่ต้องเปิดอุปกรณ์กล้อง แอป
ไม่ได้เป็นเจ้าของแฟลชหรืออุปกรณ์กล้องแต่เพียงผู้เดียว โหมดไฟฉายจะปิดและใช้งานไม่ได้เมื่ออุปกรณ์กล้องใช้งานไม่ได้ หรือเมื่อทรัพยากรกล้องอื่นๆ ที่เปิดไฟฉายไว้ใช้งานไม่ได้ แอปอื่นๆ ยังเรียกใช้
setTorchMode()
เพื่อปิดโหมดไฟฉายได้ด้วย เมื่อปิดแอปสุดท้ายที่เปิดโหมดไฟฉาย ระบบจะปิดโหมดไฟฉาย
คุณลงทะเบียนการเรียกกลับเพื่อรับการแจ้งเตือนเกี่ยวกับสถานะโหมดไฟฉายได้โดยเรียกใช้เมธอด
registerTorchCallback()
เมื่อลงทะเบียน Callback เป็นครั้งแรก ระบบจะเรียกใช้ทันทีพร้อมสถานะโหมดไฟฉาย
ของอุปกรณ์กล้องทั้งหมดที่รู้จักในปัจจุบันซึ่งมีชุดแฟลช หากเปิดหรือปิดโหมดไฟฉายสำเร็จ ระบบจะเรียกใช้เมธอด
onTorchModeChanged()
Reprocessing API
Camera2 API ได้รับการขยายเพื่อรองรับการประมวลผลรูปภาพใหม่ในรูปแบบ YUV และรูปแบบส่วนตัว
แบบทึบแสง หากต้องการดูว่าความสามารถในการประมวลผลซ้ำเหล่านี้พร้อมใช้งานหรือไม่ ให้เรียกใช้ getCameraCharacteristics() และตรวจสอบคีย์ REPROCESS_MAX_CAPTURE_STALL หากอุปกรณ์รองรับการประมวลผลซ้ำ คุณจะสร้างเซสชันการจับภาพจากกล้องที่ประมวลผลซ้ำได้โดยเรียกใช้
createReprocessableCaptureSession()
และสร้างคำขอสำหรับการประมวลผลบัฟเฟอร์อินพุตซ้ำ
ใช้ImageWriter class เพื่อเชื่อมต่อโฟลว์บัฟเฟอร์อินพุตกับอินพุตการประมวลผลซ้ำของกล้อง
หากต้องการรับบัฟเฟอร์ว่าง ให้ทำตามรูปแบบการเขียนโปรแกรมนี้
- เรียกใช้เมธอด
dequeueInputImage() - ป้อนข้อมูลลงในบัฟเฟอร์อินพุต
- ส่งบัฟเฟอร์ไปยังกล้องโดยเรียกใช้เมธอด
queueInputImage()
หากคุณใช้ออบเจ็กต์ ImageWriter ร่วมกับรูปภาพ PRIVATE แอปจะเข้าถึงข้อมูลรูปภาพโดยตรงไม่ได้ แต่ให้ส่งPRIVATEรูปภาพไปยัง
ImageWriterโดยตรงด้วยการเรียกใช้เมธอด
queueInputImage()
โดยไม่ต้องคัดลอกบัฟเฟอร์
ตอนนี้คลาส ImageReader รองรับสตรีมรูปภาพรูปแบบ
PRIVATE แล้ว การรองรับนี้ช่วยให้แอปของคุณ
รักษาคิวรูปภาพแบบวงกลมของรูปภาพเอาต์พุต ImageReader เลือกรูปภาพอย่างน้อย 1 รูป
และส่งไปยัง ImageWriter เพื่อประมวลผลกล้องอีกครั้งได้
ฟีเจอร์ของ Android for Work
การเปิดตัวนี้มี API ใหม่ต่อไปนี้สำหรับ Android for Work
- การควบคุมที่ดียิ่งขึ้นสำหรับอุปกรณ์ของบริษัทแบบใช้งานครั้งเดียว: ตอนนี้เจ้าของอุปกรณ์
สามารถควบคุมการตั้งค่าต่อไปนี้เพื่อปรับปรุงการจัดการ
อุปกรณ์ของบริษัทแบบใช้งานครั้งเดียว (COSU) ได้แล้ว
- ปิดใช้หรือเปิดใช้ Keyguard อีกครั้งด้วยเมธอด
setKeyguardDisabled() - ปิดใช้หรือเปิดใช้แถบสถานะอีกครั้ง (รวมถึงการตั้งค่าด่วน การแจ้งเตือน และท่าทางสัมผัสปัดขึ้นเพื่อไปยังส่วนต่างๆ ที่เปิด Google Now) ด้วย
setStatusBarDisabled()วิธี - ปิดใช้หรือเปิดใช้การบูตอย่างปลอดภัยอีกครั้งด้วย
UserManagerconstantDISALLOW_SAFE_BOOT - ป้องกันไม่ให้หน้าจอปิดขณะเสียบปลั๊กด้วย
STAY_ON_WHILE_PLUGGED_INconstant
- ปิดใช้หรือเปิดใช้ Keyguard อีกครั้งด้วยเมธอด
- การติดตั้งและถอนการติดตั้งแอปโดยเจ้าของอุปกรณ์โดยไม่แจ้งให้ทราบ: ตอนนี้เจ้าของอุปกรณ์สามารถ
ติดตั้งและถอนการติดตั้งแอปพลิเคชันโดยไม่แจ้งให้ทราบได้โดยใช้
PackageInstallerAPI โดยไม่ขึ้นอยู่กับ Google Play for Work ตอนนี้คุณสามารถจัดสรรอุปกรณ์ผ่านเจ้าของอุปกรณ์ที่ ดึงข้อมูลและติดตั้งแอปได้โดยไม่ต้องมีการโต้ตอบจากผู้ใช้ ฟีเจอร์นี้มีประโยชน์ในการเปิดใช้การจัดสรรคีออสก์หรืออุปกรณ์อื่นๆ ที่คล้ายกันแบบแตะครั้งเดียว โดยไม่ต้องเปิดใช้งานบัญชี Google - การเข้าถึงใบรับรองขององค์กรแบบเงียบ: เมื่อแอปเรียกใช้
choosePrivateKeyAlias()ก่อนที่ระบบจะแจ้งให้ผู้ใช้เลือกใบรับรอง ตอนนี้เจ้าของโปรไฟล์หรืออุปกรณ์สามารถเรียกใช้เมธอดonChoosePrivateKeyAlias()เพื่อระบุชื่อแทนแบบเงียบให้กับแอปพลิเคชันที่ขอได้แล้ว ฟีเจอร์นี้ช่วยให้คุณให้สิทธิ์ แอปที่จัดการเข้าถึงใบรับรองได้โดยไม่ต้องมีการโต้ตอบของผู้ใช้ - การยอมรับการอัปเดตระบบโดยอัตโนมัติ การตั้งค่านโยบายการอัปเดตระบบด้วย
setSystemUpdatePolicy()ทำให้เจ้าของอุปกรณ์สามารถยอมรับการอัปเดตระบบโดยอัตโนมัติได้แล้ว เช่น ในกรณีของอุปกรณ์คีออสก์ หรือเลื่อนการอัปเดตและป้องกันไม่ให้ผู้ใช้ทำการอัปเดตได้นานสูงสุด 30 วัน นอกจากนี้ ผู้ดูแลระบบยังตั้งค่าช่วงเวลาประจำวันซึ่งต้องทำการอัปเดตได้ด้วย เช่น ในช่วงเวลาที่ไม่ได้ใช้อุปกรณ์คีออสก์ เมื่อมีการอัปเดตระบบ ระบบจะตรวจสอบว่าแอปเครื่องมือควบคุมนโยบายด้านอุปกรณ์ได้ตั้งค่านโยบายการอัปเดตระบบหรือไม่ และจะทำงานตามนั้น -
การติดตั้งใบรับรองที่ได้รับมอบสิทธิ์: ตอนนี้เจ้าของโปรไฟล์หรือเจ้าของอุปกรณ์สามารถให้สิทธิ์แอป
ของบุคคลที่สามในการเรียกใช้
DevicePolicyManagerAPI การจัดการ ใบรับรองเหล่านี้ได้แล้ว - การติดตามปริมาณการใช้อินเทอร์เน็ต ตอนนี้เจ้าของโปรไฟล์หรืออุปกรณ์สามารถค้นหาสถิติปริมาณการใช้อินเทอร์เน็ตที่แสดงในการตั้งค่า > ปริมาณการใช้อินเทอร์เน็ตได้โดยใช้วิธีการใหม่
NetworkStatsManagerระบบจะให้สิทธิ์เจ้าของโปรไฟล์ในการค้นหาข้อมูลในโปรไฟล์ที่ตนจัดการโดยอัตโนมัติ ในขณะที่เจ้าของอุปกรณ์จะได้รับสิทธิ์เข้าถึงข้อมูลการใช้งาน ของผู้ใช้หลักที่มีการจัดการ - การจัดการสิทธิ์รันไทม์:
เจ้าของโปรไฟล์หรืออุปกรณ์สามารถตั้งค่านโยบายสิทธิ์ สำหรับคำขอรันไทม์ทั้งหมดของแอปพลิเคชันทั้งหมดที่ใช้
setPermissionPolicy()เพื่อแจ้งให้ผู้ใช้ให้สิทธิ์ หรือให้สิทธิ์โดยอัตโนมัติ หรือ ปฏิเสธสิทธิ์โดยไม่มีการแจ้งเตือน หากตั้งค่านโยบายหลัง ผู้ใช้จะแก้ไขตัวเลือกที่เจ้าของโปรไฟล์หรือเจ้าของอุปกรณ์เลือกไว้ในหน้าจอสิทธิ์ของแอปในการตั้งค่าไม่ได้ - VPN ในการตั้งค่า: ตอนนี้แอป VPN จะแสดงใน การตั้งค่า > เพิ่มเติม > VPN นอกจากนี้ การแจ้งเตือนที่มาพร้อมกับการใช้งาน VPN จะเจาะจงวิธี กำหนดค่า VPN นั้นๆ มากขึ้น สำหรับเจ้าของโปรไฟล์ การแจ้งเตือนจะเจาะจงว่ามีการกำหนดค่า VPN สำหรับโปรไฟล์ที่มีการจัดการ โปรไฟล์ส่วนตัว หรือทั้ง 2 โปรไฟล์ สำหรับเจ้าของอุปกรณ์ การแจ้งเตือนจะ เฉพาะเจาะจงว่ามีการกำหนดค่า VPN สำหรับอุปกรณ์ทั้งเครื่องหรือไม่
- การแจ้งเตือนสถานะงาน: ตอนนี้ไอคอนกระเป๋าเอกสารในแถบสถานะจะปรากฏขึ้นทุกครั้งที่ แอปจากโปรไฟล์ที่มีการจัดการมีกิจกรรมที่ทำงานอยู่เบื้องหน้า นอกจากนี้ หากอุปกรณ์ ปลดล็อกโดยตรงไปยังกิจกรรมของแอปในโปรไฟล์ที่มีการจัดการ ระบบจะแสดงข้อความแจ้งเตือน ให้ผู้ใช้ทราบว่าตนอยู่ในโปรไฟล์งาน