【问题标题】:Always scanning for WiFi Android始终扫描 WiFi Android
【发布时间】:2016-07-09 13:56:50
【问题描述】:

有什么方法可以创建一个始终扫描 wifi 并且永不停止检查的应用程序。如果是这样,它不会很快杀死电池吗?
有人可以给我一个很好的参考来扫描 wifi 并在列表视图中列出它们吗?
我已经尝试过这个Android Wi-Fi Tutorial 网站,但它对我不起作用。

这就是我所做的:

package com.example.amire.yadavar;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import java.util.List;

public class MainActivity extends Activity  {
    private ListView lv;
    private WifiManager wifi;
    private WifiScanReceiver wifiReciever;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv=(ListView)findViewById(R.id.listView);

        wifi=(WifiManager)getSystemService(Context.WIFI_SERVICE);
        wifiReciever = new WifiScanReceiver();
        wifi.startScan();
    }

    protected void onPause() {
        unregisterReceiver(wifiReciever);
        super.onPause();
    }

    protected void onResume() {
        registerReceiver(wifiReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
        super.onResume();
    }


    private class WifiScanReceiver extends BroadcastReceiver{
        public void onReceive(Context c, Intent intent) {
            List<ScanResult> wifiScanList = wifi.getScanResults();
            String[] wifis = new String[wifiScanList.size()];

            for(int i = 0; i < wifiScanList.size(); i++){
                wifis[i] = ((wifiScanList.get(i)).toString());
            }
            lv.setAdapter(new ArrayAdapter<>(getApplicationContext(),android.R.layout.simple_list_item_1, wifis));
        }
    }
}

【问题讨论】:

  • 我找到了答案,这段代码不起作用,因为我使用的是 API 23,并且在 AndroidManifest 中我必须添加 以便代码工作

标签: android wifi android-wifi scanning


【解决方案1】:

当AndroidSystem 与您的广播接收器通信并运行onRecieve 接口时,您应该调用onRecieve 中的startActivity 方法并启动WifiActivity 并获取扫描结果并通过调用setAdapter 将其传递给ListView。 这行得通:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-06
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多