/** * @return true if we want this neighbor to be added to the neighbors list fragment, which is the * case when this neighbor has no duplicate. Besides that, we upload to DB if location is not * null, but we still show in fragment if location is null. */ public boolean addNeighborInDb(WiFiP2pService d) { final Location gpsLastLocation = mLocationListeners[0].getLastLocation(); final Location networkLastLocation = mLocationListeners[1].getLastLocation(); final Location passiveLastLocation = mLocationListeners[2].getLastLocation(); String locProvider = "none"; float acc = 0; double lng = 0; double lat = 0; Location location = bestMostRecentLocation(gpsLastLocation, networkLastLocation, passiveLastLocation); if (location == null) { Log.i(TAG, "inserting neighbor - no - location is null"); Toast.makeText(this, "We're having issues getting your location", Toast.LENGTH_LONG).show(); } else { lat = location.getLatitude(); lng = location.getLongitude(); acc = location.getAccuracy(); locProvider = location.getProvider(); } String model = FileIndexingService.getDeviceName(); String deviceId = CUtils.getDeviceId(this); if (!cNeighborsDataSource.isThereAnotherCNeighborWithSameNameAndSameTimeDetectedInDb(d)) { quickLog("Cool! Doesn't have a duplicate!"); final CNeighbor cNeighbor = new CNeighbor( d.getDevice().status, d.getTimeDetectedMs(), d.getDevice().deviceName, d.getDevice().deviceAddress, d.getDevice().primaryDeviceType, d.getDevice().secondaryDeviceType, lat, lng, acc, locProvider, deviceId, model, d.getServiceRegistrationType(), d.getInstanceName()); cNeighborsDataSource.insertCNeighbor(cNeighbor); Log.w("KarimX", "Neighbors (new), inserted neighbors:" + cNeighbor.toJSONString()); return true; } else { quickLog("Duplicate detected!"); return false; } }
@Override public void onCreate() { super.onCreate(); cNeighborsDataSource = new CNeighborsDataSource(this); cNeighborsDataSource.open(); startRequestingLocationUpdates(); /** NEW * */ intentFilter.addAction(WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION); intentFilter.addAction(WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION); intentFilter.addAction(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION); intentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION); manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE); channel = manager.initialize( this, getMainLooper(), new WifiP2pManager.ChannelListener() { @Override public void onChannelDisconnected() { quickLog("Channel disconnected"); } }); startOrRestartRegistrationAndDiscovery(); wifiDirectBroadcastReceiver = new WifiDirectBroadcastReceiverMode2(manager, channel); registerReceiver(wifiDirectBroadcastReceiver, intentFilter); /** NEW * */ }