Итак, кто-то попросил меня написать приложение для него, которое регистрирует запуск и остановку, bssid, локальный ip, ssid и время запуска / остановки, когда он подключается к точке доступа WiFi.
Я сделал это:
public void onReceive(Context context, Intent intent) {
ConnectivityManager connManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo mWifi = connManager
.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
TelephonyManager telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
if (mWifi.isConnected()) {
WifiManager wifiManager = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
android.net.wifi.WifiInfo wifiInfo = wifiManager
.getConnectionInfo();
SSID = wifiInfo.getSSID();
BSSID = wifiInfo.getBSSID();
localIp = getLocalIpAddress();
Log.d("WIFI SSID",SSID);
Log.d("WIFI MAC", BSSID);
Log.d("WIFI IP", localIp);
this.startDate = c.getTime();
}
while(mWifi.isConnected()){
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.stopDate = c.getTime();
db.insertWifiInfo(SSID, BSSID,telephonyManager.getDeviceId(), localIp, startDate, stopDate);
}
Этот метод get вызывается этим фильтром намерений:
<intent-filter>
<action android:name="android.net.wifi.WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION" >
</action>
</intent-filter>
Тем не менее, является ли это лучшим способом записи времени начала и окончания? Wait () неэффективен?