- private WifiRttManager wifiRttManager;
- private WifiManager wifiManager;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- // ... ...
- if(getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_RTT)) {
- Object service = this.getApplicationContext().getSystemService(Context.WIFI_RTT_RANGING_SERVICE);
- if(service instanceof WifiRttManager) {
- wifiRttManager= (WifiRttManager) service;
- Log.i(TAG, "Get WifiRttManager Succ.");
- }
- wifiManager = (WifiManager) this.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
- IntentFilter wifiFileter = new IntentFilter();
- wifiFileter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
- wifiFileter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
- wifiFileter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
- registerReceiver(new WifiChangeReceiver(), wifiFileter);
- }
- // ... ...
- }
- private void startScanAPs() {
- wifiManager.setWifiEnabled(true);
- wifiManager.startScan();
- }
- class WifiChangeReceiver extends BroadcastReceiver {
- @RequiresApi(api = 28)
- @Override
- public void onReceive(Context context, Intent intent) {
- if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
- List<ScanResult> scanResults = wifiManager.getScanResults();
- Log.i(TAG, "Wifi Scan size:" + scanResults.size());
- for(ScanResult scanResult: scanResults) {
- Log.i(TAG, scanResult.toString());
- RangingRequest.Builder builder = new RangingRequest.Builder();
- builder.addAccessPoint(scanResult);
- wifiRttManager.startRanging(builder.build(), new RangingResultCallback() {
- @SuppressLint("Override")
- @Override
- public void onRangingFailure(int i) {
- // TODO
- }
- @SuppressLint("Override")
- @Override
- public void onRangingResults(List<RangingResult> list) {
- // TODO get result from list
- for(RangingResult result : list) {
- Log.i(TAG, result.toString());
- }
- }
- }, new Handler());
- }
- }
- }
- }
来源: https://www.cnblogs.com/wetest/p/8819004.html