2016-12-14 2 views
0

Ich beobachte Kontakt Beacons in meiner App und benutze den SpaceListener, um zu wissen, wann der Benutzer eine Region eingibt und wann der Benutzer die Region verlässt. Das Problem ist, dass ich ständig erhielt und die Region eintrat und die Region verlassen wurde. Ich verwende Version 3.2.0 der Bibliothek. Beacons sind nur eine 1m von mir und weder die Beacons noch ich bewegen sich. Ist das das normale Verhalten?Kontakt region ständig betreten und verlassen

@Override 
public void onCreate() { 
     super.onCreate(); 
     proximityManager = new ProximityManager(this); 
     proximityManager.setIBeaconListener(createIBeaconListener()); 
     proximityManager.setSpaceListener(new SpaceListener() { 
      @Override 
      public void onRegionEntered(IBeaconRegion region) { 
       Log.d(TAG,"onRegionEntered"); 
      } 

      @Override 
      public void onRegionAbandoned(IBeaconRegion region) { 
       Log.d(TAG,"onRegionAbandoned"); 
      } 

      @Override 
      public void onNamespaceEntered(IEddystoneNamespace namespace) { 

      } 

      @Override 
      public void onNamespaceAbandoned(IEddystoneNamespace namespace) { 

      } 
     }); 
     proximityManager.configuration() 
       .scanMode(ScanMode.BALANCED) 
       .activityCheckConfiguration(ActivityCheckConfiguration.MINIMAL) 
       .forceScanConfiguration(ForceScanConfiguration.MINIMAL); 
    } 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
     super.onStartCommand(intent, flags, startId); 
     proximityManager.connect(new OnServiceReadyListener() { 
        @Override 
        public void onServiceReady() { 
         proximityManager.startScanning(); 

        } 
       }); 
     return START_STICKY; 
} 

private IBeaconListener createIBeaconListener() { 
     return new SimpleIBeaconListener() { 
      private SFBeacon nearestBeacon; 
      @Override 
      public void onIBeaconDiscovered(IBeaconDevice iBeaconDevice, IBeaconRegion region) { 
       Log.d(TAG,"----------------------------------------------"); 
       Log.d(TAG,"Detected: "+iBeaconDevice.getUniqueId()+" "+iBeaconDevice.getProximityUUID().toString()+" "+iBeaconDevice.getMajor()+" "+iBeaconDevice.getMinor()); 
      } 
} 

Antwort

0

Während ich bin kein Experte auf dem Kontakt Android SDK, diese Art von Problem tritt normalerweise auf, wenn die Bake nur durch das Mobilgerät intermittierend erfasst wird. Dies kann verschiedene Ursachen haben:

  1. Die Bake kann zu schwach sein, weil die Sendeleistung zu niedrig eingestellt ist.
  2. Das Signal könnte zu schwach sein, weil es zu weit vom erkannten Telefon entfernt ist.
  3. Der Beacon möglicherweise nicht oft genug Werbung, das kann ein Problem sein, wenn es nur einmal alle 5 Sekunden oder so Werbung ist. Versuchen Sie, die Anzeigenrate auf 10 Hz oder mehr zu erhöhen, um zu sehen, ob das Problem verschwindet.
  4. Android bietet verschiedene Scanmodi, von denen einige häufiger aktualisiert werden. Versuchen Sie, ScanMode.BALANCED zu ScanMode.LOW_LATENCY
+0

Beacons sind in meiner Nähe und sie haben volle Batterie. Ich habe auch mit den niedrigen Latenzparametern überprüft, aber das Verhalten ist immer noch falsch. Aber ich habe AltBeacon Bibliothek getestet und es funktioniert wie erwartet. Jedenfalls, danke David. – esteban

+0

Gut zu hören, dass die [Android Beacon Library] (http://altbeacon.github.io/android-beacon-library/) für Sie arbeitet! Ich zögerte zu empfehlen, es zu versuchen, da ich der Hauptentwickler dieses Projekts bin und Sie nicht von einem alternativen SDK abbringen wollte. – davidgyoung

Verwandte Themen