Android WiFi 设备到 AP 的往返时间 (RTT)

标签 android wifi

随着 Android API-Level 21,SDK 分别添加了 23 种测量 Wifi roundtrip time (RTT) 的方法:

但是我没有找到任何关于如何使用 API 来测量 RTT 的信息。

相关类RttManager仍标记为系统 API。

有什么方法可以执行Device-To-AP RTT 测量吗?

最佳答案

Android P 开始,Wi-Fi RTT (IEEE 802.11mc) 的公共(public) API 现已可用。

WiFiRttManager

将以下内容添加到您的 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)!

更新:示例应用可在此处找到: Android Wifi RttManager sample

关于Android WiFi 设备到 AP 的往返时间 (RTT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39639871/

相关文章:

Android Studio Build error with AppCompat library newbie q

android - Android 中的子菜单

android - 将Android手机中的数据存储到数据库中

java - 更改 WiFi MAC 地址

android - 如何更新已创建的 Wi-Fi 配置(或 "UID XXX does not have permission to update [Wi-Fi] configuration error")?

android - 在 Android 中通过 Wi-Fi 传输文件

java - 自定义通知,如 Inshorts

android - Exoplayer 2.9.4 平滑流

linux - ThinkPad T420s 硬件 wifi 开关坏了

c# - 类型 native Wifi.Wlan + WlanReasonCode 无法编码错误