我最近在智能手机上安装了this RTT-Manager-App,主要是为了了解我的设备和可用的接入点是否支持IEEE 802.11mc标准。
但是,一旦我启动该应用程序,它就会崩溃。这是由WifiRttManager实例上的NullPointerException引起的。然后,我设置了一个微型应用程序,该应用程序仅在MainActivity中包含以下代码:
// HandwritingCanvasView.swift
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
ViewController.drawNew()
}
这将导致相同的错误:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WifiRttManager rttManager = (WifiRttManager) getBaseContext().getSystemService(Context.WIFI_RTT_RANGING_SERVICE);
rttManager.isAvailable();
}
WifiRttManager既需要Android P,也需要支持802.11mc的CPU(如上述RTT-Manager-App的作者所说的Qualcomm Snapdragon 820 CPU)。
我首先尝试在崩溃的OnePlus X(Android P和Qualcomm Snapdragon 801)上运行该应用程序,因此我认为CPU不支持802.11mc。
但是我后来也尝试在OnePlus 6T(Android P和Qualcomm Snapdragon 845)上运行它,但崩溃的原因相同。
getSystemService(Context.WIFI_RTT_RANGING_SERVICE)始终返回null的原因还有什么?
答案 0 :(得分:0)
似乎需要启用手机才能支持wirirtt。 根据google文件,https://source.android.com/devices/tech/connect/wifi-rtt
要实施Wi-Fi RTT,您必须同时提供框架和HAL /固件支持:
框架:
AOSP代码 启用Wi-Fi RTT:需要功能标记 Wi-Fi RTT(IEEE 802.11mc)HAL支持(这意味着固件支持)
要实现此功能,请实现Wi-Fi HIDL并启用功能标志:
在device //中的device.mk中,修改PRODUCT_COPY_FILES环境变量以包括对Wi-Fi RTT功能的支持:
PRODUCT_COPY_FILES + = frameworks / native / data / etc / android.hardware.wifi.rtt.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.rtt.xml
否则,此功能所需的所有内容都包含在AOSP中。