คุณสามารถใช้ฟังก์ชันตำแหน่ง Wi-Fi ที่ให้บริการโดย API RTT ของ Wi-Fi (ไป-กลับ) เพื่อวัดระยะทางไปยังจุดเข้าใช้งาน Wi-Fi และเพียร์ Wi-Fi ใกล้เคียงที่ใช้ RTT ได้ อุปกรณ์ Wi-Fi Aware
ถ้าคุณวัดระยะทางไปยังจุดเข้าใช้งาน 3 จุดขึ้นไป คุณสามารถใช้ แบบหลายมุมมอง เพื่อคาดคะเนตำแหน่งของอุปกรณ์ที่เหมาะกับความต้องการนั้นมากที่สุด การวัดค่าต่างๆ โดยปกติแล้ว ผลลัพธ์จะมีความแม่นยำภายใน 1-2 เมตร
ด้วยความแม่นยำนี้ คุณจะสามารถพัฒนาการบริการตามสถานที่แบบละเอียด เช่น เป็นการนำทางภายในอาคาร การควบคุมด้วยเสียงที่มีความชัดเจน (เช่น "เปิดฟีเจอร์นี้ แสง") และข้อมูลตามสถานที่ตั้ง (เช่น "มีข้อเสนอพิเศษไหม สำหรับผลิตภัณฑ์นี้")
อุปกรณ์ที่ส่งคำขอไม่จำเป็นต้องเชื่อมต่อกับจุดเข้าใช้งานเพื่อวัดระยะทางด้วย RTT ของ Wi-Fi เพื่อรักษาความเป็นส่วนตัว เฉพาะอุปกรณ์ที่ส่งคำขอเท่านั้นที่ทำได้ เพื่อกำหนดระยะทางไปยังจุดเข้าใช้งาน จุดเข้าใช้งานไม่มี ข้อมูลนี้ การดำเนินการ RTT ของ Wi-Fi จะใช้ได้ไม่จำกัดสำหรับแอปที่ทำงานอยู่เบื้องหน้า แต่จะถูกจำกัดสำหรับแอปที่ทำงานอยู่เบื้องหลัง
RTT ของ Wi-Fi และการวัดเวลาอย่างละเอียด (FTM) ที่เกี่ยวข้อง ที่กำหนดโดยมาตรฐาน IEEE 802.11-2016 RTT ของ Wi-Fi ต้องใช้เวลาที่แม่นยำ จาก FTM เนื่องจากจะคำนวณระยะทางระหว่าง โดยการวัดเวลาที่แพ็กเก็ตใช้เดินทางไปมาระหว่าง อื่นๆ แล้วนำเวลานั้นไปคูณกับความเร็วแสง
Android 15 (API ระดับ 35) เปิดตัวการรองรับสำหรับ IEEE 802.11az แบบไม่มีทริกเกอร์ (NTB)
ความแตกต่างในการใช้งานตามเวอร์ชันของ Android
RTT ของ Wi-Fi เปิดตัวใน Android 9 (API ระดับ 28) เมื่อใช้โปรโตคอลนี้ เพื่อระบุตำแหน่งของอุปกรณ์โดยใช้มัลติเพลตกับอุปกรณ์ที่ใช้ Android 9 คุณต้องมีสิทธิ์เข้าถึงตำแหน่งของจุดเข้าใช้งาน (AP) ที่กำหนดไว้ล่วงหน้า ข้อมูลในแอปของคุณ คุณเป็นผู้ตัดสินใจว่าจะจัดเก็บและเรียกข้อมูลนี้อย่างไร
สำหรับอุปกรณ์ที่ใช้ Android 10 (API ระดับ 29) ขึ้นไป ข้อมูลตำแหน่ง AP อาจมีลักษณะดังนี้
แสดงเป็น
ResponderLocation
ซึ่งรวมถึงละติจูด ลองจิจูด และระดับความสูง สำหรับ RTT ของ Wi-Fi ที่
สนับสนุนข้อมูลการกำหนดค่าตำแหน่ง/รายงานตำแหน่งพลเมือง (ข้อมูล LCI/LCR)
โปรโตคอลจะแสดงผลออบเจ็กต์ ResponderLocation
ระหว่าง
กระบวนการทำช่วง
ฟีเจอร์นี้ช่วยให้แอปสามารถค้นหา AP เพื่อขอตำแหน่งจาก AP ได้โดยตรง แทนที่จะต้องจัดเก็บข้อมูลนี้ไว้ล่วงหน้า แอปจึงสามารถค้นหาและระบุตำแหน่งของ AP ได้แม้ว่าจะไม่เคยรู้จัก AP นั้นมาก่อน เช่น เมื่อผู้ใช้เข้าไปในอาคารหลังใหม่
การรองรับการวัดระยะ NTB ของ IEEE 802.11az พร้อมใช้งานในอุปกรณ์ที่ใช้ Android 15 (API ระดับ 35) ขึ้นไป ซึ่งหมายความว่าหากอุปกรณ์รองรับ IEEE 802.11az
โหมดการตอบกลับ NTB (ระบุโดย
WifiRttManager.CHARACTERISTICS_KEY_BOOLEAN_STA_RESPONDER
),
แอปของคุณสามารถค้นหา AP ทั้ง IEEE 802.11mc และ IEEE 802.11az ได้ด้วย
คำขอช่วง ขยาย RangingResult
API เพื่อให้ข้อมูล
เกี่ยวกับค่าต่ำสุดและสูงสุดที่สามารถใช้เป็นช่วงเวลาระหว่าง
การวัดระยะต่างๆ โดยปล่อยให้มีช่วงเวลาที่แน่นอนในการควบคุมแอป
ข้อกำหนด
- ฮาร์ดแวร์ของอุปกรณ์ที่ส่งคำขอช่วงสัญญาณต้องใช้มาตรฐาน FTM 802.11-2016 หรือมาตรฐาน 802.11az (การระบุระยะสัญญาณที่ไม่อิงตามทริกเกอร์)
- อุปกรณ์ที่ส่งคำขอช่วงสัญญาณต้องใช้ Android 9 (ระดับ API 28) ขึ้นไป อุปกรณ์ที่ใช้ Android 15 (API ระดับ 35) ขึ้นไปจะเปิดใช้การวัดระยะทางแบบไม่ใช้ทริกเกอร์ตามมาตรฐาน IEEE 802.11az
- อุปกรณ์ที่ส่งคำขอช่วงสัญญาณต้องเปิดใช้บริการตำแหน่งและเปิดการสแกน Wi-Fi (ในส่วนการตั้งค่า > ตำแหน่ง)
- หากแอปที่ส่งคำขอช่วงกำหนดเป้าหมายเป็น Android 13 (API ระดับ 33) ขึ้นไป แอปนั้นต้องมีสิทธิ์
NEARBY_WIFI_DEVICES
หากแอปดังกล่าวกำหนดเป้าหมาย เป็น Android เวอร์ชันก่อนหน้า จะต้อง มีACCESS_FINE_LOCATION
สิทธิ์ของคุณแทน - แอปต้องค้นหาช่วงของจุดเข้าใช้งานในขณะที่แอปปรากฏหรืออยู่ใน บริการที่ทำงานอยู่เบื้องหน้า แอปไม่สามารถเข้าถึงข้อมูลตำแหน่งจาก เบื้องหลัง
- จุดเข้าใช้งานต้องใช้มาตรฐาน IEEE 802.11-2016 FTM หรือ IEEE มาตรฐาน 802.11az (ระยะที่ไม่ใช่ทริกเกอร์)
ตั้งค่า
หากต้องการตั้งค่าแอปให้ใช้ RTT ของ Wi-Fi ให้ทำตามขั้นตอนต่อไปนี้
1. ขอสิทธิ์
ขอสิทธิ์ต่อไปนี้ในไฟล์ Manifest ของแอป
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!-- If your app targets Android 13 (API level 33)
or higher, you must declare the NEARBY_WIFI_DEVICES permission. -->
<uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES"
<!-- If your app derives location information from Wi-Fi APIs,
don't include the "usesPermissionFlags" attribute. -->
android:usesPermissionFlags="neverForLocation" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
<!-- If any feature in your app relies on precise location
information, don't include the "maxSdkVersion"
attribute. -->
android:maxSdkVersion="32" />
สิทธิ์ NEARBY_WIFI_DEVICES
และ ACCESS_FINE_LOCATION
เป็นอันตราย
คุณจึงต้องขอสิทธิ์ดังกล่าวทุกครั้งที่ผู้ใช้ต้องการ
ดำเนินการสแกน RTT แอปของคุณจะต้องขอ
สิทธิ์หากคุณยังไม่ได้ดำเนินการ หากต้องการดูข้อมูลเพิ่มเติม
เกี่ยวกับสิทธิ์รันไทม์ โปรดดู
ขอสิทธิ์ของแอป
2. ตรวจสอบว่าอุปกรณ์รองรับ Wi-Fi RTT หรือไม่
หากต้องการตรวจสอบว่าอุปกรณ์รองรับ RTT ผ่าน Wi-Fi หรือไม่ ให้ใช้ PackageManager
API ดังนี้
Kotlin
context.packageManager.hasSystemFeature(PackageManager.FEATURE_WIFI_RTT)
Java
context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_RTT);
3. ตรวจสอบว่า Wi-Fi RTT พร้อมใช้งานหรือไม่
อุปกรณ์อาจมี RTT ของ Wi-Fi แต่อาจใช้งานไม่ได้เนื่องจากผู้ใช้ปิดใช้ Wi-Fi ทั้งนี้ขึ้นอยู่กับความสามารถของฮาร์ดแวร์และเฟิร์มแวร์
อุปกรณ์อาจไม่รองรับ RTT ของ Wi-Fi หากใช้ SoftAP หรือการเชื่อมต่ออินเทอร์เน็ตผ่านมือถือ หากต้องการตรวจสอบ
บริการ RTT ของ Wi-Fi พร้อมใช้งานหรือไม่ โปรดโทร
isAvailable()
ความพร้อมใช้งานของ RTT ของ Wi-Fi อาจเปลี่ยนแปลงได้ทุกเมื่อ แอปของคุณควรลงทะเบียน
BroadcastReceiver
ที่จะได้รับ
ACTION_WIFI_RTT_STATE_CHANGED
ซึ่งจะส่งเมื่อมีการเปลี่ยนแปลงความพร้อมจำหน่ายสินค้า เมื่อแอปของคุณได้รับ Intent ของการส่งข้อมูล แอปควรตรวจสอบสถานะความพร้อมปัจจุบันและปรับลักษณะการทํางานตามความเหมาะสม
เช่น
Kotlin
val filter = IntentFilter(WifiRttManager.ACTION_WIFI_RTT_STATE_CHANGED) val myReceiver = object: BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { if (wifiRttManager.isAvailable) { … } else { … } } } context.registerReceiver(myReceiver, filter)
Java
IntentFilter filter = new IntentFilter(WifiRttManager.ACTION_WIFI_RTT_STATE_CHANGED); BroadcastReceiver myReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (wifiRttManager.isAvailable()) { … } else { … } } }; context.registerReceiver(myReceiver, filter);
ดูข้อมูลเพิ่มเติมได้ในประกาศ
สร้างคำขอช่วง
คำขอระยะ
สร้าง (RangingRequest
) แล้ว
ด้วยการระบุรายการ AP หรือแอปเทียบเท่า Wi-Fi Aware ที่มีช่วง
สามารถระบุจุดเข้าใช้งานหลายจุดหรือแอปเทียบเท่า Wi-Fi Aware ได้ใน
คำขอระยะเดียว ระยะทางไปยังอุปกรณ์ทั้งหมดจะได้รับการวัดและส่งคืน
ตัวอย่างเช่น คำขอสามารถใช้วิธี addAccessPoint()
เพื่อระบุจุดเข้าใช้งานที่จะวัดระยะทางได้ ดังนี้
Kotlin
val req: RangingRequest = RangingRequest.Builder().run { addAccessPoint(ap1ScanResult) addAccessPoint(ap2ScanResult) build() }
Java
RangingRequest.Builder builder = new RangingRequest.Builder(); builder.addAccessPoint(ap1ScanResult); builder.addAccessPoint(ap2ScanResult); RangingRequest req = builder.build();
ระบบจะระบุจุดเข้าใช้งานด้วยออบเจ็กต์ ScanResult
ซึ่งรับได้โดยเรียกใช้ WifiManager.getScanResults()
คุณใช้ addAccessPoints(List<ScanResult>)
เพื่อเพิ่มจุดเข้าใช้งานหลายจุดพร้อมกันได้
ออบเจ็กต์ ScanResult
มีทั้ง IEEE 802.11mc (is80211mcResponder()
) และ
รองรับช่วงที่ไม่ใช่ทริกเกอร์ IEEE 802.11az (is80211azNtbResponder()
)
AP อุปกรณ์ที่รองรับย่านความถี่ NTB ของ IEEE 802.11az จะทำการวัดระยะ 802.11mc หรือ 802.11az โดยขึ้นอยู่กับความสามารถของ AP โดยค่าเริ่มต้นจะเป็น 802.11az เมื่อ AP รองรับทั้ง 2 ย่านความถี่ อุปกรณ์ที่ไม่รองรับ IEEE 802.11az จะทำการจับคู่ทั้งหมดโดยใช้โปรโตคอล IEEE 802.11mc
ในทำนองเดียวกัน คำขอกำหนดระยะจะสามารถเพิ่มเพียร์ Wi-Fi Aware โดยใช้ MAC ของ Wi-Fi ของเครื่อง
ที่อยู่หรือ PeerHandle
โดยใช้
เวลา
addWifiAwarePeer(MacAddress peer)
และ addWifiAwarePeer(PeerHandle peer)
ตามลำดับ ดูข้อมูลเพิ่มเติมเกี่ยวกับการค้นหาแอปที่เทียบเท่า Wi-Fi Aware
ดูเอกสารประกอบเกี่ยวกับ Wi-Fi Aware
ระยะคำขอ
แอปออกคำขอกำหนดระยะโดยใช้
WifiRttManager.startRanging()
และระบุสิ่งต่อไปนี้
RangingRequest
เพื่อระบุ
Executor
เพื่อระบุ
บริบท Callback และ
RangingResultCallback
เพื่อรับผลลัพธ์
เช่น
Kotlin
val mgr = context.getSystemService(Context.WIFI_RTT_RANGING_SERVICE) as WifiRttManager val request: RangingRequest = myRequest mgr.startRanging(request, executor, object : RangingResultCallback() { override fun onRangingResults(results: List<RangingResult>) { … } override fun onRangingFailure(code: Int) { … } })
Java
WifiRttManager mgr = (WifiRttManager) Context.getSystemService(Context.WIFI_RTT_RANGING_SERVICE); RangingRequest request ...; mgr.startRanging(request, executor, new RangingResultCallback() { @Override public void onRangingFailure(int code) { … } @Override public void onRangingResults(List<RangingResult> results) { … } });
การดำเนินการกำหนดระยะจะทำงานไม่พร้อมกัน และผลการวัดระยะ
แสดงผลในการเรียกกลับรายการใดรายการหนึ่งของ
RangingResultCallback
- ถ้าการดำเนินการกำหนดระยะทั้งหมดล้มเหลว ระบบจะ
onRangingFailure
Callback จะทำงานโดยมีรหัสสถานะที่อธิบายไว้ในRangingResultCallback
ความล้มเหลวดังกล่าวอาจเกิดขึ้นหากบริการไม่สามารถดำเนินการวัดระยะทางได้ในขณะนั้น เช่น เนื่องจาก Wi-Fi ปิดอยู่ แอปพลิเคชันขอการดำเนินการวัดระยะทางมากเกินไปและถูกจำกัด หรือปัญหาเกี่ยวกับสิทธิ์ - เมื่อการดำเนินการช่วงเสร็จสมบูรณ์ ระบบจะเรียกใช้การเรียกกลับ
onRangingResults
ด้วยรายการผลลัพธ์ที่ตรงกับรายการคำขอ โดยให้ผลลัพธ์ 1 รายการสำหรับคำขอแต่ละรายการ ลำดับของผลลัพธ์ไม่ ต้องตรงกับลำดับของคำขอ โปรดทราบว่าการวัดระยะอาจเสร็จสมบูรณ์แล้ว แต่ผลลัพธ์แต่ละรายการอาจยังคงบ่งชี้ว่าการวัดนั้นไม่สำเร็จ
ตีความผลลัพธ์การระบุตำแหน่ง
ผลลัพธ์แต่ละรายการที่แสดงผลโดย callback ของ onRangingResults
จะระบุด้วยออบเจ็กต์ RangingResult
ทำตามขั้นตอนต่อไปนี้ในคำขอแต่ละรายการ
1. ระบุคำขอ
ระบุคำขอตามข้อมูลที่ให้ไว้ตอนที่สร้าง
RangingRequest
ซึ่งมักจะเป็นที่อยู่ MAC ที่ระบุไว้ใน ScanResult
เพื่อระบุการเข้าถึง
คะแนน คุณดูที่อยู่ MAC ได้จากผลลัพธ์การระบุระยะโดยใช้วิธี getMacAddress()
รายการผลลัพธ์ของการวัดระยะอาจเรียงลำดับต่างจากอุปกรณ์ใกล้เคียง (จุดเข้าใช้งาน) ที่ระบุไว้ในคำขอการวัดระยะ คุณจึงควรใช้ที่อยู่ MAC เพื่อระบุอุปกรณ์ใกล้เคียง ไม่ใช่ลำดับของผลลัพธ์
2. ตรวจสอบว่าการวัดผลแต่ละครั้งสําเร็จหรือไม่
หากต้องการระบุว่าการวัดผลสําเร็จหรือไม่ ให้ใช้วิธีgetStatus()
ค่าอื่นๆ นอกเหนือจาก STATUS_SUCCESS
บ่งบอกถึงความล้มเหลว หากไม่สำเร็จ หมายความว่าฟิลด์อื่นๆ ทั้งหมดของผลลัพธ์นี้ (ยกเว้นการระบุคำขอด้านบน) ไม่ถูกต้อง และเมธอด get*
ที่เกี่ยวข้องจะดำเนินการไม่สำเร็จพร้อมข้อยกเว้น IllegalStateException
3. ดูผลลัพธ์ของการวัดที่สำเร็จแต่ละครั้ง
สําหรับการวัดผลที่ประสบความสําเร็จแต่ละครั้ง (RangingResult
) คุณสามารถเรียกค่าผลลัพธ์ด้วยเมธอด get
ที่เกี่ยวข้อง ดังนี้
ระยะทางเป็น mm และค่าเบี่ยงเบนมาตรฐานของการวัด
RSSI ของแพ็กเก็ตที่ใช้วัดค่า
เวลาในการวัดเป็นมิลลิวินาที (แสดงเวลานับตั้งแต่เปิดเครื่อง)
จํานวนการวัดที่พยายามทํา และจํานวนการวัดที่ประสบความสําเร็จ (ซึ่งเป็นข้อมูลสําหรับการวัดระยะทาง)
เวลาขั้นต่ำและสูงสุดที่อุปกรณ์ไคลเอ็นต์ต้องรอระหว่าง 11az NTB สัดส่วน:
getMinTimeBetweenNtbMeasurementsMicros()
และgetMaxTimeBetweenNtbMeasurementsMicros()
แสดงเวลาต่ำสุดและสูงสุด หากมีการขอการวัดระยะถัดไปก่อนที่เวลาขั้นต่ำจะผ่านไป API จะแสดงผลลัพธ์การวัดระยะที่แคชไว้ หากมีการร้องขอการวัดระยะถัดไปหลังจาก เวลาที่ผ่านไปสูงสุดแล้ว API จะหยุดการทำงานที่ไม่ได้ทริกเกอร์ การจัดเซสชันและเจรจาต่อรองเซสชันการกำหนดระยะใหม่กับฝ่าย สถานีมือถือ คุณควรหลีกเลี่ยงการขอเซสชันการจัดระยะใหม่ เนื่องจากจะเป็นการเพิ่ม ค่าใช้จ่ายต่อเวลาการวัดระยะทาง เพื่อใช้ประโยชน์จาก 802.11az อย่างเต็มที่ ประสิทธิภาพของช่วงที่ไม่ใช่ทริกเกอร์ เรียกใช้คำขอช่วงถัดไป ระหว่างเวลาการวัดต่ำสุดและสูงสุดที่ระบุไว้ในก่อนหน้านี้ การวัดRangingResult
การกล่าวซ้ำๆ เกี่ยวกับฟิลด์การฝึกอบรมแบบยาว (LTF) ที่ผู้ตอบและสถานีผู้เริ่มงาน ที่ใช้ในข้อความเบื้องต้นสำหรับผลลัพธ์ IEEE 802.11az NTB:
จำนวนการรับส่งสตรีมเวลาเชิงพื้นที่ (STS) ที่ผู้เริ่ม สถานีที่ใช้สำหรับผลลัพธ์ IEEE 802.11az NTB:
อุปกรณ์ Android ที่รองรับ Wi-Fi-RTT
ตารางต่อไปนี้แสดงรายการโทรศัพท์ จุดเข้าใช้งาน และอุปกรณ์ค้าปลีก คลังสินค้า และศูนย์กระจายสินค้าที่รองรับ WiFi-RTT สิ่งเหล่านี้ห่างไกลจากความครอบคลุม เราขอแนะนำให้คุณ ติดต่อเรา เพื่อแสดงผลิตภัณฑ์ที่รองรับ RTT ที่นี่
จุดเข้าใช้งาน
ผู้ผลิตและรุ่น | วันที่ให้การสนับสนุน |
---|---|
Nest Wifi Pro (Wi-Fi 6E) | รองรับ |
Compulab WILD AP | รองรับ |
Google Wi-Fi | รองรับ |
เราเตอร์ Google Nest Wi-Fi | รองรับ |
Google Nest Wi-Fi Point | รองรับ |
อารูบา AP-635 | รองรับ |
Cisco 9130 | รองรับ |
Cisco 9136 | รองรับ |
Cisco 9166 | รองรับ |
Cisco 9164 | รองรับ |
อารูบา AP-505 | รองรับ |
อารูบา AP-515 | รองรับ |
อารูบา AP-575 | รองรับ |
Aruba AP-518 | รองรับ |
อารูบา AP-505H | รองรับ |
อารูบา AP-565 | รองรับ |
Aruba AP-535 | รองรับ |
โทรศัพท์
ผู้ผลิตและรุ่น | รุ่นของ Android |
---|---|
Pixel 6 | 9.0 ขึ้นไป |
Pixel 6 Pro | 9.0 ขึ้นไป |
Pixel 5 | 9.0 ขึ้นไป |
Pixel 5a | 9.0 ขึ้นไป |
Pixel 5a 5G | 9.0 ขึ้นไป |
Xiaomi Mi 10 Pro | 9.0 ขึ้นไป |
Xiaomi Mi 10 | 9.0 ขึ้นไป |
Xiaomi Redmi Mi 9T Pro | 9.0 ขึ้นไป |
Xiaomi Mi 9T | 9.0 ขึ้นไป |
Xiaomi Mi 9 | 9.0 ขึ้นไป |
Xiaomi Mi Note 10 | 9.0 ขึ้นไป |
Xiaomi Mi Note 10 Lite | 9.0 ขึ้นไป |
Xiaomi Redmi Note 9S | 9.0 ขึ้นไป |
Xiaomi Redmi Note 9 Pro | 9.0 ขึ้นไป |
Xiaomi Redmi Note 8T | 9.0 ขึ้นไป |
Xiaomi Redmi Note 8 | 9.0 ขึ้นไป |
Xiaomi Redmi K30 Pro | 9.0 ขึ้นไป |
Xiaomi Redmi K20 Pro | 9.0 ขึ้นไป |
Xiaomi Redmi K20 | 9.0 ขึ้นไป |
Xiaomi Redmi Note 5 Pro | 9.0 ขึ้นไป |
Xiaomi Mi CC9 Pro | 9.0 ขึ้นไป |
LG G8X ThinQ | 9.0 ขึ้นไป |
LG V50S ThinQ | 9.0 ขึ้นไป |
LG V60 ThinQ | 9.0 ขึ้นไป |
LG V30 | 9.0 ขึ้นไป |
Samsung Galaxy Note 10 ขึ้นไป 5G | 9.0 ขึ้นไป |
Samsung Galaxy S20+ 5G | 9.0 ขึ้นไป |
Samsung Galaxy S20+ | 9.0 ขึ้นไป |
Samsung Galaxy S20 5G | 9.0 ขึ้นไป |
Samsung Galaxy S20 Ultra 5G | 9.0 ขึ้นไป |
Samsung Galaxy S20 | 9.0 ขึ้นไป |
Samsung Galaxy Note 10+ | 9.0 ขึ้นไป |
Samsung Galaxy Note 10 5G | 9.0 ขึ้นไป |
Samsung Galaxy Note 10 | 9.0 ขึ้นไป |
Samsung A9 Pro | 9.0 ขึ้นไป |
Google Pixel 4 XL | 9.0 ขึ้นไป |
Google Pixel 4 | 9.0 ขึ้นไป |
Google Pixel 4a | 9.0 ขึ้นไป |
Google Pixel 3 XL | 9.0 ขึ้นไป |
Google Pixel 3 | 9.0 ขึ้นไป |
Google Pixel 3a XL | 9.0 ขึ้นไป |
Google Pixel 3a | 9.0 ขึ้นไป |
Google Pixel 2 XL | 9.0 ขึ้นไป |
Google Pixel 2 | 9.0 ขึ้นไป |
Google Pixel 1 XL | 9.0 ขึ้นไป |
Google Pixel 1 | 9.0 ขึ้นไป |
Poco X2 | 9.0 ขึ้นไป |
Sharp Aquos R3 SH-04L | 9.0 ขึ้นไป |
อุปกรณ์สำหรับร้านค้าปลีก คลังสินค้า และศูนย์กระจายสินค้า
ผู้ผลิตและรุ่น | รุ่นของ Android |
---|---|
Zebra PS20 | 10.0 ขึ้นไป |
Zebra TC52/TC52HC | 10.0 ขึ้นไป |
Zebra TC57 | 10.0 ขึ้นไป |
ม้าลาย TC72 | 10.0 ขึ้นไป |
ม้าลาย TC77 | 10.0 ขึ้นไป |
ม้าลาย MC93 | 10.0 ขึ้นไป |
ม้าลาย TC8300 | 10.0 ขึ้นไป |
Zebra VC8300 | 10.0 ขึ้นไป |
ม้าลาย EC30 | 10.0 ขึ้นไป |
Zebra ET51 | 10.0 ขึ้นไป |
Zebra ET56 | 10.0 ขึ้นไป |
ม้าลาย L10 | 10.0 ขึ้นไป |
Zebra CC600/CC6000 | 10.0 ขึ้นไป |
ม้าลาย MC3300X | 10.0 ขึ้นไป |
Zebra MC330x | 10.0 ขึ้นไป |
ม้าลาย TC52X | 10.0 ขึ้นไป |
Zebra TC57x | 10.0 ขึ้นไป |
Zebra EC50 (LAN และ HC) | 10.0 ขึ้นไป |
Zebra EC55 (WAN) | 10.0 ขึ้นไป |
ม้าลาย WT6300 | 10.0 ขึ้นไป |
Skorpio X5 | 10.0 ขึ้นไป |