การสแกนหาปริมาณการใช้เครือข่าย Wi-Fi ที่ต้องการ

การสแกน Wi-Fi หลักจากการเลิกใช้เครือข่าย (PNO) คือการสแกน Wi-Fi แบบใช้พลังงานต่ำที่เกิดขึ้นเป็นระยะๆ เมื่ออุปกรณ์ไม่ได้เชื่อมต่อกับ Wi-Fi และหน้าจอปิดอยู่ การสแกน PNO ใช้เพื่อค้นหาและเชื่อมต่อกับเครือข่ายที่บันทึกไว้ เฟรมเวิร์กจะกำหนดเวลาการสแกนเหล่านี้โดยใช้คำสั่ง NL80211_CMD_START_SCHED_SCAN สำหรับข้อมูลเพิ่มเติม โปรดดู nl80211.h

เพิ่มประสิทธิภาพการใช้พลังงานด้วยข้อมูลการเคลื่อนไหวของอุปกรณ์

ในอุปกรณ์ที่ใช้ Android 9 หรือต่ำกว่า เมื่ออุปกรณ์ตัดการเชื่อมต่อจาก Wi-Fi และหน้าจอปิดอยู่ การสแกน PNO จะทำงานเป็นช่วงๆ ละ 20 วินาทีสำหรับการสแกน 3 ครั้งแรก จากนั้นจะช้าลงเป็น 1 ครั้งทุกๆ 60 วินาทีสำหรับการสแกนต่อๆ ไปทั้งหมด การสแกน PNO จะหยุดเมื่อพบเครือข่ายที่บันทึกไว้หรือหน้าจอเปิดอยู่

Android 10 เปิดตัวเมธอด API ที่ไม่บังคับชื่อ setDeviceMobilityState() ใน WifiManager ซึ่งจะเพิ่มช่วงเวลาระหว่างการสแกน PNO โดยอิงตามสถานะการเคลื่อนไหวของอุปกรณ์เพื่อลดการใช้พลังงาน

สถานะการเคลื่อนที่ที่เป็นไปได้มีดังนี้

  • DEVICE_MOBILITY_STATE_UNKNOWN: ความคล่องตัวที่ไม่รู้จัก
  • DEVICE_MOBILITY_STATE_HIGH_MVMT: ขี่จักรยานหรืออยู่ในยานพาหนะ
  • DEVICE_MOBILITY_STATE_LOW_MVMT: การเดินหรือวิ่ง
  • DEVICE_MOBILITY_STATE_STATIONARY: ไม่ได้ย้าย

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

หากอุปกรณ์อยู่ในสถานะการเคลื่อนไหวอื่นๆ หรือหากไม่มีการเรียกวิธีการ อุปกรณ์จะใช้ลักษณะการสแกน PNO เริ่มต้น

การใช้งาน

หากต้องการใช้ฟีเจอร์การเพิ่มประสิทธิภาพพลังงานนี้ในอุปกรณ์ที่ใช้ Android 10 ขึ้นไป ให้ดึงข้อมูลการเคลื่อนไหวของอุปกรณ์และเรียกใช้เมธอด setDeviceMobilityState() จากแอประบบที่กำหนดเอง