Android Q จะให้แอปบันทึกเสียงจากแอปอื่นๆ และตรวจสอบอุณหภูมิของอุปกรณ์

Android Q เพิ่ม API ใหม่เพื่อบันทึกเสียงภายในจากแอปอื่นและตรวจสอบอุณหภูมิของอุปกรณ์

Google ให้ และ Google ก็เอาไป Android ใหม่ทุกรุ่นแนะนำ API ใหม่มากมายที่ปรับปรุงการทำงานของแอพที่มีอยู่หรือเปิดแอพหมวดหมู่ใหม่ ในทางกลับกัน Google ยังยกเลิกการเข้าถึงหรือจำกัดความสามารถของ API ที่มีอยู่เพื่อปรับปรุงความปลอดภัยของแพลตฟอร์ม Android Android Q release ก็ไม่แตกต่างกัน และเราได้พูดคุยกันมากมายเกี่ยวกับการเปลี่ยนแปลงพื้นที่เก็บข้อมูลที่ใช้ร่วมกัน การเข้าถึงคลิปบอร์ด การแจ้งเตือน และ API อื่น ๆ ในปีนี้ การประชุมนักพัฒนา Google I/O, Google ได้ประกาศ API ใหม่ใน Android Q ที่น่าสนใจเป็นพิเศษสำหรับผู้ใช้และนักพัฒนาเกมมือถือ: AudioPlaybackCapture และ API ความร้อน

การบันทึกเสียงจากแอพอื่นด้วย AudioPlaybackCapture ใน Android Q

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

Android รองรับการจับภาพหน้าจอตั้งแต่เริ่มต้น แต่การจับภาพวิดีโอบนหน้าจอได้รับการรองรับตั้งแต่ Android 5.0 Lollipop พร้อมด้วยการเปิดตัว

MediaProjection API. น่าเศร้าที่ API นี้ไม่อนุญาตให้แอปของบุคคลที่สามบันทึกเอาต์พุตเสียงภายในในแอปอื่นๆ บังคับให้เครื่องบันทึกหน้าจอของบริษัทอื่นบันทึกเอาต์พุตเสียงภายนอกจากไมโครโฟนของอุปกรณ์ (s) OEM เช่น Samsung และ หัวเว่ย ให้แอประบบบันทึกเสียงภายในระหว่างการบันทึกหน้าจอ แต่เป็นวิธีเดียว สำหรับเจ้าของอุปกรณ์อื่น ๆ ที่จะบันทึกวิดีโอและเสียงจากอุปกรณ์ของตนได้อย่างถูกต้องคือการซื้อ ก อุปกรณ์เสริมของบุคคลที่สาม. โชคดีที่ในที่สุด Google ก็ได้เปิดตัววิธีใน Android Q สำหรับแอปของบุคคลที่สามในการบันทึกเสียงจากแอปอื่นๆ

Google อธิบายว่า AudioPlaybackCapture API เป็นระบบอะนาล็อกของการจับภาพหน้าจอ แต่สำหรับการบันทึกเสียง แม้ว่าแอปเดียวที่ใช้ API จะเป็นของ Google คำบรรยายสดซึ่งเป็นเครื่องมือช่วยการเข้าถึงที่เพิ่มคำบรรยายให้กับวิดีโอใด ๆ ที่กำลังเล่นบนอุปกรณ์ซึ่งเป็นของ API เอกสารระบุว่าวัตถุประสงค์หลักคือการอนุญาตให้แอปสตรีมมิ่งจับเสียงได้ เล่นเกม ลองนึกถึงเกมเมอร์บนมือถือที่สตรีมเซสชันของตนไปยังบริการต่างๆ เช่น Twitch หรือ YouTube API ได้รับการออกแบบมาเพื่อไม่ส่งผลกระทบต่อเวลาแฝงของเสียงของแอปที่มีการบันทึกเสียง ทำให้เหมาะสำหรับการบันทึกการเล่นเกมเพื่อให้เสียงและวิดีโอไม่ซิงค์กัน

แนวทางของ Google ในการใช้ API ใหม่ต่างจากในยุคแรก ๆ ของ Android ต้องใช้ความระมัดระวังมากกว่า AudioPlaybackCapture สามารถใช้ได้เฉพาะเมื่อทั้งแอพที่มีการบันทึกเสียงและแอพที่ทำการจับภาพนั้นตรงตามข้อกำหนดเฉพาะเท่านั้น ต่อไปนี้เป็นบทสรุปของข้อกำหนดเหล่านั้น:

  • เพื่อให้แอปของบุคคลที่สามบันทึกเสียงของแอปได้ ต้องเป็นไปตามข้อกำหนดต่อไปนี้:
    • แอปต้องตั้งค่า AllowAudioPlaybackCapture เป็นจริงหรือไม่ได้ตั้งค่าไว้ในไฟล์ Manifest (ค่าเริ่มต้นเป็นจริงสำหรับแอปที่กำหนดเป้าหมายเป็น Android Q แต่สามารถตั้งค่าด้วยตนเองสำหรับแอปที่กำหนดเป้าหมายเป็น Android Pie)
    • แอปที่สร้างเสียงจะต้องมีการใช้เสียงประเภท USAGE_MEDIA, USAGE_GAME หรือ USAGE_UNKNOWN
    • นโยบายการจับเสียง (setAllowedCapturePolicy) ต้องตั้งค่าเป็น ALLOW_CAPTURE_BY_ALL นโยบายนี้สามารถตั้งค่าได้ที่รันไทม์ แต่ต้องรีสตาร์ทการเล่นเพื่อให้การเปลี่ยนแปลงนโยบายมีผล หากตั้งค่า ALLOW_CAPTURE_BY_SYSTEM ไว้ เฉพาะแอประบบเท่านั้นที่สามารถบันทึกเสียงได้ (แต่ถูกจำกัดไว้ใน ไม่สามารถบันทึกเสียง ส่งต่อไปยังแอปของบริษัทอื่น หรือบันทึกที่ > 16kHz โมโน 16 บิต คุณภาพ.)
  • เพื่อให้แอปบันทึกเสียงจากแอปอื่นได้ ต้องเป็นไปตามข้อกำหนดต่อไปนี้:
    • แอปจะต้องแสดงพร้อมต์ MediaProjectionManager.createScreenCaptureIntent และผู้ใช้ต้องยอมรับ
      กล่องโต้ตอบการยืนยันที่ผู้ใช้เห็นเมื่อแอปพยายามจับภาพหน้าจอโดยใช้ MediaProjection API
    • แอพจะต้องถือ บันทึก_เสียง การอนุญาต.
    • แอปจะต้องอยู่ในโปรไฟล์ผู้ใช้เดียวกันกับแอปที่จะบันทึกเสียง

ฉันจินตนาการว่าเกมส่วนใหญ่จะอนุญาตให้แอปบันทึกเสียงโดยใช้ API ใหม่นี้ แต่อาจต้องใช้เวลาสักระยะกว่าเกมจะได้รับการอัปเดตเพื่อรองรับ ในทางกลับกัน อย่าคาดหวังว่าแอปสตรีมเพลงหรือวิดีโอจะรองรับ API นี้สำหรับบุคคลที่สามเนื่องจากปัญหาด้านใบอนุญาต อย่างไรก็ตาม ข้อจำกัดที่ Google ได้กำหนดไว้หากแอปตั้งค่านโยบายการจับเสียงเป็น ALLOW_CAPTURE_BY_SYSTEM หมายความว่า นักพัฒนาแอปสตรีมเพลงและวิดีโอควรยอมรับการเปิดใช้งานการบันทึกเสียงโดยระบบเพื่อปรับปรุงการเข้าถึง

หากต้องการอ่านเพิ่มเติมเกี่ยวกับ AudioPlaybackCapture API ใน Android Q โปรดดูที่ หน้านี้.

การตรวจสอบการควบคุมปริมาณด้วย Thermal API ใน Android Q

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

อย่างไรก็ตาม ด้วย Thermal API ใหม่ใน Android Q แอปสามารถรับการเรียกกลับสำหรับขั้นตอนต่างๆ ของการควบคุมปริมาณประสิทธิภาพ - ให้ นักพัฒนามีโอกาสช่วยลดความเครียดบนอุปกรณ์โดยลดกิจกรรมที่ต้องใช้ CPU, GPU หรือโมเด็มจำนวนมาก การใช้งาน ตัวอย่างเช่น เกมอาจลดความละเอียดแบบไดนามิกจนกว่าอุปกรณ์จะไม่ควบคุมปริมาณ GPU อีกต่อไป หรือแอป Maps อาจปิดใช้งานคุณสมบัติที่ได้รับการปรับปรุง เช่น การนำทางความเป็นจริงยิ่ง เพื่อลดภาระบน CPU

หากต้องการใช้ API ใหม่นี้ แอปจะลงทะเบียน Listener ใน PowerManager (addThermalStatusListener) และระบบจะส่งแอปหนึ่งในรหัสสถานะความร้อนต่อไปนี้:

  • THERMAL_STATUS_NONE: "ไม่ได้อยู่ภายใต้การควบคุมปริมาณ"
  • THERMAL_STATUS_LIGHT: "การควบคุมปริมาณเล็กน้อยโดยที่ UX ไม่ได้รับผลกระทบ"
  • THERMAL_STATUS_MODERATE: "ควบคุมปริมาณปานกลางโดยที่ UX ไม่ได้รับผลกระทบมากนัก"
  • THERMAL_STATUS_SEVERE: "การควบคุมปริมาณอย่างรุนแรงโดยที่ UX ได้รับผลกระทบอย่างมาก"
  • THERMAL_STATUS_CRITICAL: "แพลตฟอร์มทำทุกอย่างเพื่อลดพลังงาน"
  • THERMAL_STATUS_EMERGENCY: "ส่วนประกอบหลักในแพลตฟอร์มกำลังปิดตัวลงเนื่องจากสภาวะความร้อน ฟังก์ชันการทำงานของอุปกรณ์จะถูกจำกัด"
  • THERMAL_STATUS_SHUTDOWN: "จำเป็นต้องปิดระบบทันที

เห็นได้ชัดว่าการรองรับ Thermal API ต้องใช้ Android Q แต่ข้อกำหนดอีกประการหนึ่งคือการเพิ่ม HAL ใหม่ Google กล่าวว่าอุปกรณ์ Pixel บน Android Q (หมายถึง Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL, พิกเซล 3เอ, และ พิกเซล 3a XL) รองรับ Thermal API แต่ Google กำลังทำงานเพื่อเพิ่มการรองรับสำหรับอุปกรณ์อื่นๆ

อ่านเพิ่มเติมเกี่ยวกับ Thermal API ที่นี่.