0

当有人连接到我的便携式 AP 热点/断开连接时,我正在尝试收听该事件。我试试这段代码

 Process p;
try
{
  p = Runtime.getRuntime().exec("logcat -s hostapd:I");
  BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
  String line;
  while ((line = br.readLine()) != null)
  {
    if (line.contains("AP-STA-CONNECTED") || line.contains("AP-STA-DISCONNECTED")) Log.e("mytag", line);
  }
}
catch (IOException e)
{
  // TODO Auto-generated catch block
  e.printStackTrace();
}

它就像我想要的那样工作。但我不知道如何将它放入我的服务中以与我的活动并行运行。或者是否有其他方法可以识别何时有人连接或断开我的便携式 AP 热点?

4

1 回答 1

0

除非您将其放在单独的线程上,否则服务不会与 Activity 并行运行。

如果您使用服务或不使用,则必须使用单独的线程来并行运行此代码。

在您的情况下,我相信最好使用WiFiManager来获取 SSID 信息。

WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
 if (wifiManager != null) {
     WifiInfo wifi = wifiManager.getConnectionInfo();
     if (wifi != null) {
        String ssid = wifi.getSSID();
 }           
}

如果您的应用程序正在监视它连接到哪个 AP,请尝试使用以下意图的广播接收器。您可以通过代码或在 Android Manifest 中注册它。

ConnectivityManager.CONNECTIVITY_ACTION

那么整个事情将如何运作?每当您的应用收到此连接更改广播时,您将在 BroadcastReceiver 中检查 AP 名称。

于 2013-04-02T05:20:30.980 回答