2017-01-22 3 views
0

Ist es möglich, iBeacons auf Android-Geräte (Raspberry Pi 3) zu erkennen?Detect iBeacons auf Android-Geräte (Raspberry Pi 3)

Ich versuche, Bluetooth Low Energy (BLE) Beacon Nachrichten mit der Nearby Messages API. zu abonnieren Meine App abonniert ibeacon Nachrichten in foreground, aber die registrierten iBeacons werden nicht erkannt.

Every funktioniert gut, aber beim Starten erhalte ich diese Meldung:

E/BluetoothAdapter: Bluetooth binder is null

Hat jemand Erfahrung mit der IBeacon Erkennung auf Android-Geräte Dinge (Raspberry Pi 3)?

Antwort

0

Ich vermute, Sie haben Probleme beim Scannen für BLE-Geräte auf dem Raspberry Pi 3 mit Nearby. Es kann ein Problem mit der Android-Treiberschnittstelle zum integrierten Bluetooth-LE-Chip sein.

In der Nähe ist eine harte API zur Fehlersuche, da es hohe Ebene und undurchsichtig ist. Ich würde versuchen, Low-Level-Scanning-APIs zu verwenden, um festzustellen, ob Sie bessere Fehlermeldungen erhalten. Sie könnten versuchen, meine super einfache BLE packet counter App zu laufen. Es macht einen Scan wie folgt und einfach protokolliert eine Zählung der Ergebnisse:

private BluetoothAdapter mBluetoothAdapter; 
private boolean mScanning; 
private Handler mHandler; 
private long mAdvertisementCount = 0; 
private BluetoothAdapter.LeScanCallback mLeScanCallback = 
     new BluetoothAdapter.LeScanCallback() { 
      @Override 
      public void onLeScan(final BluetoothDevice device, int rssi, 
           byte[] scanRecord) { 
       mAdvertisementCount++; 
       Log.d(TAG, ""+mAdvertisementCount); 
      } 
     }; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final BluetoothManager bluetoothManager = 
      (BluetoothManager) getSystemService(this.BLUETOOTH_SERVICE); 
    mBluetoothAdapter = bluetoothManager.getAdapter(); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    mBluetoothAdapter.startLeScan(mLeScanCallback); 
} 

protected void onPause() { 
    super.onPause(); 
    mBluetoothAdapter.stopLeScan(mLeScanCallback); 
} 

Wenn Sie diesen Code ausführen können Sie sehen, wenn Sie Low-Level-Fehler in den Protokollen bekommen, und wenn der Zähler erhöht in Gegenwart von ein Leuchtfeuer.

1

Update: Seit der Veröffentlichung von Android Things Entwicklervorschau 3 sind nun Bluetooth und BLE verfügbar.

Bluetooth ist in der aktuellen Version von Android Dinge deaktiviert, es wird erwartet, dass in naher Zukunft enthalten sein wird.