7

मैं अपने Android डिवाइस पर AltBeacon नमूना एप्लिकेशन का उपयोग कर रहा - altbeacon.org द्वारा प्रदान की नमूना ऐप आ गया है: https://github.com/AltBeacon/android-beacon-library-referenceAltbeacon android लाइब्रेरी का उपयोग कर एकाधिक बीकन का पता कैसे लगाएं?

हालांकि, जब शुरू की का पता लगाने और केवल एक बीकन प्रदर्शित कर रहा है अनुप्रयोग। मेरे एंड्रॉइड डिवाइस के पास मेरे पास लगभग 5 बीकन हैं। मैं सभी बीकन का पता कैसे लगा सकता हूं?

RangingActivity.java में, मैं इस विधि देखा है कि बुलाया जा रहा है, जब एक बीकन दृष्टि में आता है:

public void onBeaconServiceConnect() { 
    beaconManager.setRangeNotifier(new RangeNotifier() { 
    @Override 
    public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) { 
     if (beacons.size() > 0) { 
      EditText editText = (EditText) RangingActivity.this.findViewById(R.id.rangingText);      
        Beacon firstBeacon = beacons.iterator().next(); 
        logToDisplay("The first beacon " + firstBeacon.toString() + " is about " + firstBeacon.getDistance() + " meters away."); 
      } 
     } 
    } 

मैं iterator थोड़ी देर के पाश में संग्रह से पढ़ने के लिए संशोधित इस प्रकार है:

 Beacon firstBeacon; 
    while(beacons.iterator().hasNext()){ 
       firstBeacon = beacons.iterator().next(); 
       logToDisplay("The first beacon " + firstBeacon.toString() + " is about " + firstBeacon.getDistance() + " meters away."); 
      } 

हालांकि, ऐप इस संशोधन के साथ दुर्घटनाग्रस्त हो जाता है।

मेरे सवालों का:

(1) मैं सभी बीकन कि अपने Android डिवाइस के पास हैं कैसे प्रदर्शित कर सकते हैं?

(2) मैं क्षेत्र से बाहर होने वाले बीकन का पता कैसे लगा सकता हूं?

+0

क्या आप अपने प्रश्न पर क्रैश होने पर लॉगक आउटपुट जोड़ सकते हैं? – Joe

उत्तर

5

1. मुझे लगता है कि आपको फॉर लूप का उपयोग करने की आवश्यकता है। इस प्रकार सं.

for (Beacon beacon : beacons) { 
    logToDisplay("The beacon " + beacon.toString() + " is about " + beacon.getDistance() + " meters away."); 
} 

2. के लिए मुझे लगता है कि पता लगाने में समस्या हो रही थी, लेकिन यह एक लंबे समय समाप्त हो सकता है। तो बहुत धीरज रखो। मुझे लगता है कि निगरानी गतिविधि में कोड उस के लिए एक संदेश प्रदर्शित करने के लिए बदला जा सकता है। या आप किसी डिवाइस से लॉगकैट की समीक्षा कर सकते हैं। BeaconReferenceAplication के didExitRegion अनुभाग के अंदर एक साधारण लॉग टॉइसप्ले का उपयोग किया जा सकता है।

public void didExitRegion(Region region) { 
    if (monitoringActivity != null) { 
     monitoringActivity.logToDisplay("I no longer see a beacon in the "+region.getUniqueId()); 
    } 
} 
+1

लूप का उपयोग करना सही जवाब है। संदर्भ ऐप सिर्फ सादगी के लिए देखे गए पहले बीकन की दूरी दिखाता है – davidgyoung

संबंधित मुद्दे