API ของ Android 6.0

Android 6.0 (M) ซึ่งนำเสนอฟีเจอร์ใหม่ๆ ให้แก่ผู้ใช้และนักพัฒนาแอป เอกสารนี้จะให้ข้อมูลเบื้องต้นเกี่ยวกับ API ที่มีชื่อเสียงมากที่สุด

เริ่มพัฒนา

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

อัปเดตระดับ 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 and Payment API

หากคุณกำลังทดสอบฟีเจอร์นี้ ให้ทำตามขั้นตอนต่อไปนี้

  1. ติดตั้ง Android SDK Tools Revision 24.3 หากยังไม่ได้ติดตั้ง
  2. ลงทะเบียนลายนิ้วมือใหม่ในโปรแกรมจำลองโดยไปที่ การตั้งค่า > ความปลอดภัย > ลายนิ้วมือ จากนั้นทำตามวิธีการลงทะเบียน
  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 ของตน ระบบจะลบข้อมูลสำรองไปด้วย เพื่อดูวิธี ทำงานและวิธีกำหนดค่าสิ่งที่จะสำรองไว้ในระบบไฟล์ โปรดดู การกำหนดค่าการสำรองข้อมูลอัตโนมัติสำหรับแอป

แชร์โดยตรง

ส่วนด้านล่างของอุปกรณ์เคลื่อนที่แสดงฟังก์ชันการแชร์โดยตรง

รุ่นนี้มี 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 ชั้นเรียนเพื่อขอการยืนยันด้วยเสียงจากผู้ใช้ เลือก จากรายการตัวเลือก และอื่นๆ

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้การสั่งงานด้วยเสียงได้ที่ เว็บไซต์ของนักพัฒนาซอฟต์แวร์ Voice Actions

API การสนับสนุน

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

แอปของคุณสามารถเลือกที่จะไม่แชร์บริบทปัจจุบันกับผู้ช่วยได้โดยการตั้งค่า แฟล็ก FLAG_SECURE นอกจาก ชุดข้อมูลมาตรฐานที่แพลตฟอร์มส่งผ่านไปยังผู้ช่วย โดยแอปของคุณสามารถแชร์ โดยใช้คลาส AssistContent ใหม่ได้

หากต้องการให้บริบทเพิ่มเติมจากแอปแก่ผู้ช่วย ให้ทำตามขั้นตอนต่อไปนี้

  1. ใช้อินเทอร์เฟซ Application.OnProvideAssistDataListener
  2. ลงทะเบียน Listener นี้โดยใช้ registerOnProvideAssistDataListener()
  3. ในการให้ข้อมูลบริบทเฉพาะกิจกรรม ให้แทนที่ onProvideAssistData() Callback และบรรทัดใหม่ วันที่ onProvideAssistContent() Callback

อุปกรณ์เก็บข้อมูลที่นำมาใช้ได้

ในรุ่นนี้ ผู้ใช้จะใช้อุปกรณ์จัดเก็บข้อมูลภายนอก เช่น การ์ด SD ได้ การนำ อุปกรณ์จัดเก็บข้อมูลภายนอกจะเข้ารหัสและจัดรูปแบบอุปกรณ์ให้ทำงานเหมือนที่จัดเก็บข้อมูลภายใน ช่วงเวลานี้ ช่วยให้ผู้ใช้ย้ายทั้งแอปและข้อมูลส่วนตัวของแอปเหล่านั้นไปมาระหว่างอุปกรณ์จัดเก็บข้อมูลได้ วันและเวลา ระบบจะทำงานตาม android:installLocation ค่ากำหนดในไฟล์ Manifest

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

หากต้องการแก้ไขข้อบกพร่องของฟีเจอร์นี้ ให้เปิดใช้ไดรฟ์ 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 แทน รหัสทรัพยากรที่ถอนออกได้
  • เมธอด getActiveNotifications() ใหม่ที่ช่วยให้ เพื่อดูว่าการแจ้งเตือนใดบ้างที่ทำงานอยู่ในขณะนั้น

รองรับสไตลัสบลูทูธ

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

ปรับปรุงการสแกนหาบลูทูธพลังงานต่ำ

ถ้าแอปของคุณสแกนบลูทูธพลังงานต่ำ ให้ใช้ setCallbackType() เพื่อระบุว่าคุณต้องการให้ระบบแจ้งเตือน Callback เมื่อพบครั้งแรกหรือเห็นหลังจาก ได้นาน แพ็กเก็ตโฆษณาที่ตรงกับชุด ScanFilter ช่วงเวลานี้ ในการสแกนจะประหยัดพลังงานมากกว่าที่เคยให้ไว้ในแพลตฟอร์มเวอร์ชันก่อน

การสนับสนุนฮอตสปอต 2.0 รุ่น 1

รุ่นนี้เพิ่มการสนับสนุนสำหรับข้อมูลจำเพาะของฮอตสปอต 2.0 รุ่น 1 บนอุปกรณ์ Nexus 6 และ Nexus 9 ถึง จัดสรรข้อมูลเข้าสู่ระบบฮอตสปอต 2.0 ในแอปของคุณ โดยใช้วิธีการใหม่ๆ WifiEnterpriseConfig ชั้นเรียน เช่น setPlmn() และ setRealm() ใน WifiConfiguration คุณสามารถตั้งค่า FQDN และ providerFriendlyName ช่อง เมธอด isPasspointNetwork() ใหม่จะระบุว่าตรวจพบ เครือข่าย หมายถึงจุดเข้าใช้งานฮอตสปอต 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() แทน วิธีการเหล่านี้ พร้อมให้ใช้งานในไลบรารี Appcompat เวอร์ชัน 4 ผ่าน ContextCompat ด้วย

ฟีเจอร์เสียง

รุ่นนี้เพิ่มการเพิ่มประสิทธิภาพการประมวลผลเสียงบน Android ดังต่อไปนี้

  • การรองรับ MIDI ด้วย android.media.midi API ใหม่ ใช้ API เหล่านี้เพื่อส่งและรับ MIDI กิจกรรม
  • AudioRecord.Builder และ AudioTrack.Builder ใหม่ ในการสร้างออบเจ็กต์การบันทึกเสียงและการเล่นแบบดิจิทัลตามลำดับ และกำหนดค่าเสียง พร็อพเพอร์ตี้แหล่งที่มาและซิงก์เพื่อลบล้างค่าเริ่มต้นของระบบ
  • ฮุก API สำหรับการเชื่อมโยงอุปกรณ์เสียงและอุปกรณ์อินพุต ซึ่งจะเป็นประโยชน์อย่างยิ่งหากแอปของคุณ อนุญาตให้ผู้ใช้เริ่มค้นหาด้วยเสียงจากเกมคอนโทรลเลอร์หรือรีโมตคอนโทรลที่เชื่อมต่อกับ Android ทีวี ระบบจะเรียกใช้ฟิลด์ onSearchRequested() Callback เมื่อผู้ใช้เริ่มการค้นหา เพื่อดูว่าอุปกรณ์อินพุตของผู้ใช้มี ไมโครโฟน ให้เรียกออบเจ็กต์ InputDevice จาก Callback นั้นแล้วเรียก เมธอด hasMicrophone() ใหม่
  • เมธอด getDevices() ใหม่ที่ช่วยให้คุณ เรียกดูรายการอุปกรณ์เสียงทั้งหมดที่เชื่อมต่อกับระบบในปัจจุบัน นอกจากนี้คุณยังสามารถลงทะเบียน AudioDeviceCallback ออบเจ็กต์หากต้องการให้ระบบแจ้งเตือนแอปของคุณ เมื่ออุปกรณ์เสียงเชื่อมต่อหรือยกเลิกการเชื่อมต่อ

ฟีเจอร์วิดีโอ

รุ่นนี้เพิ่มความสามารถใหม่ๆ ให้กับ API การประมวลผลวิดีโอ ซึ่งได้แก่

  • คลาส MediaSync ใหม่ที่ช่วยให้แอปพลิเคชันแสดงผลแบบพร้อมกัน เสียงและวิดีโอสตรีม บัฟเฟอร์เสียงจะถูกส่งโดยใช้รูปแบบที่ไม่บล็อกและเป็น แสดงผลผ่าน Callback นอกจากนี้ยังรองรับอัตราการเล่นแบบไดนามิกด้วย
  • เหตุการณ์ EVENT_SESSION_RECLAIMED ใหม่ ซึ่งระบุว่า ผู้จัดการทรัพยากรอ้างสิทธิ์เซสชันที่เปิดโดยแอปอีกครั้งแล้ว หากแอปใช้เซสชัน DRM คุณควรจัดการกิจกรรมนี้และตรวจสอบว่าไม่ได้ใช้เซสชันที่มีการเรียกคืน
  • รหัสข้อผิดพลาด ERROR_RECLAIMED ใหม่ซึ่งระบุ ที่ผู้จัดการทรัพยากรได้อ้างสิทธิ์ทรัพยากรสื่อที่ตัวแปลงรหัสใช้กลับคืนมา ยกเว้นในกรณีพิเศษนี้ ตัวแปลงรหัสต้องถูกปล่อย เนื่องจากตัวแปลงรหัสได้ย้ายไปเป็นสถานะเทอร์มินัลแล้ว
  • อินเทอร์เฟซใหม่ของ getMaxSupportedInstances() เพื่อรับคำแนะนำเกี่ยวกับจำนวนสูงสุดที่รองรับ อินสแตนซ์ตัวแปลงรหัสพร้อมกัน
  • วิธีการ setPlaybackParams() ใหม่ในการตั้งค่าอัตราการเล่นสื่อสำหรับการเล่นเร็วหรือ การเล่นสโลว์โมชัน นอกจากนี้ยังยืดหรือเร่งการเล่นเสียงโดยอัตโนมัติใน ร่วมกับวิดีโอ

ฟีเจอร์ของกล้อง

รุ่นนี้มี API ใหม่ต่อไปนี้สำหรับการเข้าถึงไฟฉายของกล้องและสำหรับ การประมวลผลภาพใหม่ด้วยกล้อง:

API ไฟฉาย

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

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

กำลังประมวลผล API

ขยาย Camera2 API เพื่อรองรับ YUV และแบบส่วนตัว การประมวลผลรูปภาพรูปแบบทึบแสง หากต้องการดูว่าใช้ความสามารถในการประมวลผลซ้ำเหล่านี้ได้หรือไม่ โทรหา getCameraCharacteristics() และตรวจสอบ REPROCESS_MAX_CAPTURE_STALL หากมี อุปกรณ์รองรับการประมวลผลใหม่ คุณสามารถสร้างเซสชันการจับภาพด้วยกล้องที่ประมวลผลซ้ำได้โดยการโทร createReprocessableCaptureSession() และสร้างคำขอสำหรับการประมวลผลบัฟเฟอร์อินพุตใหม่

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

  1. เรียกใช้เมธอด dequeueInputImage()
  2. กรอกข้อมูลลงในบัฟเฟอร์อินพุต
  3. ส่งบัฟเฟอร์ไปที่กล้องโดยเรียก queueInputImage() วิธี

หากคุณใช้ออบเจ็กต์ ImageWriter ร่วมกับ รูปภาพ PRIVATE แอปของคุณไม่สามารถเข้าถึงรูปภาพ ข้อมูลโดยตรง แต่ให้ส่งรูปภาพ PRIVATE ไปยัง ImageWriter โดยการเรียกใช้ queueInputImage() วิธี โดยไม่ต้องคัดลอกบัฟเฟอร์ใดๆ

ชั้นเรียน ImageReader รองรับแล้ว สตรีมรูปภาพในรูปแบบ PRIVATE การสนับสนุนนี้ช่วยให้แอปของคุณ รักษาคิวภาพวงกลมของภาพเอาต์พุต ImageReader ภาพ โปรดเลือก 1 รายการหรือ รูปภาพเพิ่มเติม แล้วส่งไปยัง ImageWriter เพื่อประมวลผลกล้องอีกครั้ง

ฟีเจอร์ของ Android for Work

รุ่นนี้มี API ใหม่ต่อไปนี้สำหรับ Android for Work

  • การควบคุมที่เพิ่มประสิทธิภาพสำหรับอุปกรณ์แบบใช้งานครั้งเดียวที่องค์กรเป็นเจ้าของ: เจ้าของอุปกรณ์ สามารถควบคุมการตั้งค่าต่อไปนี้เพื่อปรับปรุงการจัดการ อุปกรณ์แบบใช้งานครั้งเดียว (COSU) ที่เป็นของบริษัท
    • ปิดใช้หรือเปิดใช้การล็อกปุ่มอีกครั้งโดยใช้ setKeyguardDisabled() วิธี
    • ปิดหรือเปิดใช้งานแถบสถานะอีกครั้ง (รวมถึงการตั้งค่าด่วน การแจ้งเตือน และ ท่าทางสัมผัสการปัดขึ้นเพื่อนำทางซึ่งจะเปิด Google Now) ด้วย setStatusBarDisabled()
    • ปิดใช้หรือเปิดใช้การเปิดเครื่องที่ปลอดภัยอีกครั้งด้วยค่าคงที่ UserManager DISALLOW_SAFE_BOOT
    • ป้องกันไม่ให้หน้าจอปิดเมื่อเสียบปลั๊ก ค่าคงที่ STAY_ON_WHILE_PLUGGED_IN
  • การติดตั้งและถอนการติดตั้งแอปโดยไม่ส่งเสียงโดยเจ้าของอุปกรณ์: เจ้าของอุปกรณ์สามารถทำสิ่งต่อไปนี้ได้แล้ว ติดตั้งและถอนการติดตั้งแอปพลิเคชันแบบเงียบๆ โดยใช้ PackageInstaller API ที่เป็นอิสระจาก Google Play for Work ตอนนี้คุณสามารถจัดสรรอุปกรณ์ผ่านเจ้าของอุปกรณ์ที่ ดึงข้อมูลและติดตั้งแอปโดยไม่ต้องโต้ตอบกับผู้ใช้ ฟีเจอร์นี้มีประโยชน์สำหรับการเปิดใช้ด้วยการแตะเพียงครั้งเดียว การจัดสรรคีออสก์หรืออุปกรณ์อื่นๆ โดยไม่ต้องเปิดใช้งานบัญชี Google
  • การเข้าถึงใบรับรองขององค์กรที่ไม่มีเสียง: เมื่อมีการเรียกแอป choosePrivateKeyAlias(), ก่อนที่ผู้ใช้จะได้รับข้อความแจ้งให้เลือกใบรับรอง โปรไฟล์หรือเจ้าของอุปกรณ์สามารถโทรหาได้แล้วในตอนนี้ onChoosePrivateKeyAlias() เพื่อระบุชื่อแทนให้กับแอปพลิเคชันที่ขอโดยไม่มีการแจ้งเตือน ฟีเจอร์นี้ช่วยให้คุณให้สิทธิ์ แอปที่มีการจัดการมีสิทธิ์เข้าถึงใบรับรองโดยไม่ต้องมีการโต้ตอบของผู้ใช้
  • การยอมรับการอัปเดตระบบโดยอัตโนมัติ ตั้งค่านโยบายการอัปเดตระบบด้วย setSystemUpdatePolicy(), เจ้าของอุปกรณ์สามารถยอมรับระบบโดยอัตโนมัติแล้ว เช่น ในกรณีของอุปกรณ์คีออสก์ หรือเลื่อนการอัปเดตออกไป และป้องกันไม่ให้เกิด ของผู้ใช้เป็นเวลาถึง 30 วัน นอกจากนี้ ผู้ดูแลระบบยังสามารถกำหนดกรอบเวลารายวัน การอัปเดตที่ต้องดำเนินการ เช่น ในช่วงเวลาที่ไม่มีการใช้งานอุปกรณ์คีออสก์ วันและเวลา มีการอัปเดตระบบพร้อมใช้งาน ระบบจะตรวจสอบว่าแอปเครื่องมือควบคุมนโยบายด้านอุปกรณ์ได้ตั้งค่าระบบไว้หรือไม่ อัปเดตนโยบายและจะทำงานตามนั้น
  • การติดตั้งใบรับรองที่ได้รับมอบสิทธิ์: ตอนนี้โปรไฟล์หรือเจ้าของอุปกรณ์สามารถให้สิทธิ์ แอปของบุคคลที่สามสามารถเรียกใช้ใบรับรอง DevicePolicyManager เหล่านี้ API การจัดการ:
  • อุปกรณ์เคลื่อนที่แสดงฟีเจอร์การแจ้งเตือนสถานะงานภายใน Android for Work
  • การติดตามปริมาณการใช้อินเทอร์เน็ต ขณะนี้โปรไฟล์หรือเจ้าของอุปกรณ์สามารถค้นหา สถิติการใช้งานข้อมูลที่แสดงในการตั้งค่า > การใช้ข้อมูลโดยใช้ NetworkStatsManager วิธี เจ้าของโปรไฟล์จะได้รับสิทธิ์โดยอัตโนมัติ มีสิทธิ์ค้นหาข้อมูลในโปรไฟล์ที่ตนจัดการ ขณะที่เจ้าของอุปกรณ์มีสิทธิ์เข้าถึงข้อมูลการใช้งาน ของผู้ใช้หลักที่มีการจัดการ
  • การจัดการสิทธิ์รันไทม์:

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

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