2016-05-02 18 views
0

Ich versuche, den TI SensorTag als iBeacon mit der Altbeacon-Bibliothek zu erkennen.Beacons kann nicht erkannt werden (TI SensorTag CC2650) mit Altbeacon

Ich habe bereits den Code aus dem Altbeacon Tutorial implementiert und versuchte, in IBeacon Layout zu analysieren, wie in diesem Beitrag beschrieben:

Is this the correct layout to detect iBeacons with AltBeacon's Android Beacon Library?

jedoch die Größe der

Collection<Beacon> beacons = 0 

sogar obwohl ich das Leuchtfeuer im Logfile wie folgt finden kann:

D/BluetoothLeScanner: onScanResult() - ScanResult {mGerät = A0: E6: F8: B6: 62: 01, mScanRecord = ScanRecord [mAdvertiseFlags = 5, mServiceUuids = [0000aa80-0000-1000-8000-00805f9b34fb], mManufacturerSpecificData = {13 = [3, 0, 0]}, mServiceData = {}, mTxPowerLevel = 0, mDeviceName = CC2650 SensorTag], mRssi = -36, mTimestampNanos = 625504179339285}

Mein Code sieht wie folgt:

public class BeaconActivity extends Activity implements BeaconConsumer { 

    private final static int REQUEST_ENABLE_BT = 1; 
    private static final String TAG = "BeaconActivity"; 

    private BeaconManager beaconManager = null; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_beacon); 
     beaconManager = BeaconManager.getInstanceForApplication(this); 
     beaconManager.getBeaconParsers().add(new BeaconParser(). 
       setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24")); 
     beaconManager.bind(this); 
    } 

    @Override 
    public void onBeaconServiceConnect() { 
     beaconManager.setRangeNotifier(new RangeNotifier() { 
      @Override 
      public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) { 
       Log.d(TAG, "onBeaconService"); 
       if (beacons.size() > 0) { 
        Beacon firstBeacon = beacons.iterator().next(); 
        Log.i(TAG, "The first beacon " + firstBeacon.toString() + " is about " + firstBeacon.getDistance() + " meters away."); 
       } 
      } 
     }); 

     try { 
      beaconManager.startRangingBeaconsInRegion(new Region("myRangingUniqueId", null, null, null)); 

     } catch (RemoteException e) { 
      Log.v(TAG, "Error whilte trying to startRangingBeaconsInRegion: ", e); 
     } 
    } 

Antwort

0

Die unten angezeigte Protokollzeile zeigt an, dass das erkannte BLE-Paket nicht eine Beacon-Übertragung ist. Dies bedeutet wahrscheinlich, dass der SensorTag nicht mit der richtigen Firmware geladen ist, um sie als Beacon zu übertragen.

D/BluetoothLeScanner: onScanResult() - ScanResult{mDevice=A0:E6:F8:B6:62:01, >mScanRecord=ScanRecord [mAdvertiseFlags=5, mServiceUuids=[0000aa80-0000-1000->8000-00805f9b34fb], mManufacturerSpecificData={13=[3, 0, 0]}, mServiceData={}, >mTxPowerLevel=0, mDeviceName=CC2650 SensorTag], mRssi=-36, >mTimestampNanos=625504179339285}

Die oben bedeutet, dass die SensorTag Übertragung erkannt wird einen GATT-Service UUID und einen Hersteller Werbung für Hersteller Texas Instruments mit drei Datenbytes zu senden: 03 00 00. Das Getriebe entspricht nicht jedes bekanntes Bake-Format .

+0

Ich dachte der SensorTag enthält iBeacon Technologie. Zumindest lese ich es hier [link] (http://www.ti.com/tool/cc2650stk) –

+0

Out of the Box ist es nicht konfiguriert, um wie ein Beacon zu verhalten. Sie müssen dazu spezielle Firmware auf das Gerät laden. – davidgyoung