1

Je travaille sur une application qui est basée sur les balises. Le scénario est le suivant: lorsque l'utilisateur se rendra à proximité par distance, il recevra une notification. Pour cela, j'essaie de surveiller la région en arrière-plan alors que Bluetooth est éteint, mais cela ne fonctionne pas, c'est-à-dire que je ne reçois aucun rappel, c'est-à-dire "onRegionEntered" ou "onRegionAbandoned". Donc, la question est: est-ce possible de surveiller une région lorsque la fonction Bluetooth du téléphone est désactivée (Offcource Location (GPS) est activée), si oui alors comment, veuillez fournir un échantillon ou un fragment de code.iBeacon (Kontakt Beacon) surveillance de la région dans android

Comme nous avons des périphériques iBeacon "Kontakt", j'utilise kontakt sdk. Kontakt SDK

J'utilise cette configuration pour la surveillance de la région

private void configureProximityManager() { 
    proximityManager.configuration() 
      .scanMode(ScanMode.BALANCED) 
      .activityCheckConfiguration(ActivityCheckConfiguration.MINIMAL) 
      .forceScanConfiguration(ForceScanConfiguration.MINIMAL) 
      //.deviceUpdateCallbackInterval(2000) 
      .rssiCalculator(RssiCalculators.newLimitedMeanRssiCalculator(5)) 
      .monitoringEnabled(true) 
      .monitoringSyncInterval(3); 

    addReasonForMonitoring(); 

    //GcmNetworkManager.getInstance(this).cancelTask(); 
} 

private void addReasonForMonitoring(){ 
    beaconRegions.clear(); 
    beaconRegions.add(getBeaconReason()); 
    proximityManager.spaces().iBeaconRegions(beaconRegions); 
} 

private BeaconRegion getBeaconReason(){ 
    return new BeaconRegion.Builder() 
      .setIdentifier(FORKSPOT_REASON) 
      .setProximity(UUID.fromString(BEACON_UUID)) 
      //.setMajor(restBeaconsInfo.getMajor()) 
      //.setMinor(restBeaconsInfo.getMinor()) 
      .build(); 

} 
private void startMonitoring() { 
    Log.e(TAG,"start monitoring"); 
    int checkSelfPermission = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION); 

    if ((PackageManager.PERMISSION_GRANTED == checkSelfPermission) /*&& Utils.getBluetoothState()*/) { 
     proximityManager.connect(new OnServiceReadyListener() { 
      @Override 
      public void onServiceReady() { 
       Log.e(TAG, "startScanning"); 
       proximityManager.startScanning(); 
      } 
     }); 
    } else { 
     Log.e(TAG, "Permission not guaranteed or bluetooth is off"); 
    } 
} 

Répondre

2

Si le Bluetooth est désactivé, vous ne pouvez pas détecter les balises Bluetooth LE. Il s'agit d'une restriction du système d'exploitation et non spécifique à un balise SDK.

Bien que cela puisse paraître évident, c'est une bonne question étant donné que Google analyse en interne les réseaux WiFi à des fins de localisation même si le WiFi est désactivé. La même chose n'est cependant pas vraie pour Bluetooth.

+0

Merci @davidgyoung pour votre réponse rapide. –