有了Android API-Level 21
,分别为23种一些方法来衡量无线上网roundtrip time
(RTT)加入到SDK:Android的WiFi设备到AP的往返时间(RTT)
但我没有找到任何信息如何使用API来测量RTT
。
相关类RttManager仍被标记为系统API。
有没有什么办法可以测量Device-To-AP RTT
?
有了Android API-Level 21
,分别为23种一些方法来衡量无线上网roundtrip time
(RTT)加入到SDK:Android的WiFi设备到AP的往返时间(RTT)
但我没有找到任何信息如何使用API来测量RTT
。
相关类RttManager仍被标记为系统API。
有没有什么办法可以测量Device-To-AP RTT
?
我写了一个小libary到COMPAT类内包装隐藏的API调用:
的LIB利用Java反射来获取访问API,基本上它似乎工作。
更新:
更新:
从Android P
开始,现在有一个用于Wi-Fi RTT(IEEE 802.11mc)的公共API。
以下内容添加到您的AndroidManifest:
<manifest ...>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-feature android:name="android.hardware.wifi.rtt" />
...
</manifest>
获取WiFiRttManager的实例:
final WifiRttManager rttManager = (WifiRttManager) context.getSystemService(Context.WIFI_RTT_RANGING_SERVICE);
检查设备是否支持RTT测量:
rttManager.isAvailable();
执行测距:
// A ScanResult can be retrieved by e.g. perform a WiFi scan for WiFi's in range -> https://developer.android.com/reference/android/net/wifi/ScanResult.html
final RangingRequest request = new RangingRequest.Builder()
.addAccessPoint(scanResult)
.build();
final RangingResultCallback callback = new RangingResultCallback() {
public void onRangingResults(List<RangingResult> results) {
// Handle result, e.g. get distance to Access Point
}
public void onRangingFailure(int code) {
// Handle failure
}
};
// Start ranging and return result on main thread.
rttManager.startRanging(request, callback, null);
请注意,该接入点支持Wi-Fi无线RTT(IEEE 802.11mc)以及!