Bluetooth LE-Werbung schlägt beim Start und stoppt zyklisch

Ich habe ausprobiert Bluetooth LE Werbung, dh mit einem Android-Handy als BLE "Peripherie" Gerät. Starten und Stoppen einer konstanten Werbung einmal funktioniert gut, aber wenn ich gern tatsächlich verschiedene Daten übertragen würde, müsste ich die Werbung in einem Zyklus starten und stoppen und das Werbepaket immer wechseln.

Ich benutze diese Methoden natürlich:
BluetoothLeAdvertiser.startWerbung ()
BluetoothLeAdvertiser.stopWerbung ()

  • Wie suche ich nach einem Wort in einem String und markiere das Wort in einer Textansicht in Android?
  • Android App nicht installieren. Ein bestehendes Paket mit dem gleichen Namen mit einer gegensätzlichen Signatur ist bereits installiert
  • Finde Ansicht mit gegebenen x / y-Koordinaten in android
  • Wie kann man selbstständig Scrollen von Zeilen und Spalten (a la Netflix App) auf Android in einem WebView?
  • SQLiteDatabase.query-Methode
  • Android: Ist onPause () garantiert nach dem Ende ()?
  • Zumindest auf einem Motorola Moto G 4G 2. Gen. (XT1072) mit Android 5.0.2 der Zyklus läuft nur für eine Weile und dann etwas schief geht im Bluetooth-Stack und eine neue Werbung kann nicht mehr gestartet werden. Wenn ich den Zyklus schnell laufe, passiert dies schnell und wenn es langsam läuft, braucht es mehr Zeit, so dass es sich um einen Puffer füllen könnte.

    Meine Frage ist: passiert das auch auf anderen Geräten als Motorola?

    (Und alle anderen verwandten Kommentare sind natürlich willkommen.)

    Theoretisch könnte es von einer herstellerspezifischen HAL-Implementierung etc. abhängig sein, also würde ich gerne wissen, ob ich nur ein anderes Gerät bekommen soll, um daran zu arbeiten, da jeder Fehler von Google / Motorola etwas Zeit in Anspruch nehmen würde.

    Diese Test-App. Kann verwendet werden, um dies auszuprobieren:

    Https://bitbucket.org/MarkusKauppinen/bleadvertisertest

    Wenn alles gut geht, wird es glücklich bleiben Werbung für immer und wenn dieses Problem reproduziert wird, wird es einen Dialog innerhalb von ein paar Minuten oder so zeigen. Wenn Ihr Gerät nicht unterstützt Bluetooth LE Werbung oder BLE überhaupt wird es nur abstürzen. (Es ist nur eine schnelle und verschmutzte Test-App.)

    Eine weitere einfache Möglichkeit, dies zu reproduzieren ist, um die "bluetoothadvertiser" App von https://github.com/devunwired/accessory-samples auszuführen und einfach nur schnell auf die Schaltfläche "Update Werbung" auf der Benutzeroberfläche für eine Weile zu klopfen.

    Weitere Details:

    Die Bluetooth LE Peripherie-Modus-Unterstützung (benötigt für die Werbung) wurde in Lollipop hinzugefügt und ist nicht verfügbar in 4.x. Nur bestimmte Geräte haben die Peripherie-Modus-Unterstützung. Kompatibilität ist zumindest in:

    Https://altbeacon.github.io/android-beacon-library/beacon-transmitter-devices.html Chipsätze / Geräte, die Android 5 BLE Peripherie-Modus- Chipsätze unterstützen, die BLE-Peripherie-Rolle auf Android 5 unterstützen

    Zum Beispiel sollten diese Geräte die Unterstützung haben: Motorola Moto E 4G (2015), Motorola Moto G 4G (2nd gen.), Sony Xperia M4 Aqua, ZTE Blade S6, Motorola Moto X (2014), Samsung Galaxy S6, Google Nexus 6 , Google Nexus 9, HTC One M9, Samsung Galaxy S6 Edge.

    Wie für die "schmutzigen Details" kann ich immer eine "GKI_Exception" in LogCat sehen, bevor dies geschieht:

    GKI_exception (): 65524 getbuf: aus Puffer

    Bald nach der ersten "GKI_Exception" scheitert die Werbung bei AdvertiseCallback.ADVERTISE_FAILED_INTERNAL_ERROR. Die Linie…

    E / BtGatt.btif? ### ASSERT: extern / bluetooth / bluedroid / main /../ btif / src / btif_gatt_client.c Zeile 803 Kontextübertragung fehlgeschlagen! (3) ###

    … ist wahrscheinlich relevant, aber ich bin nicht vertraut mit BlueDroid. Die Behauptung ist hier:

    Https://android.googlesource.com/platform/external/bluetooth/bluedroid/+/android-5.0.2_r1/btif/src/btif_gatt_client.c#803

    Einige mögliche Probleme:
    Https://code.google.com/p/android/issues/detail?id=65455 <- Ich habe einige Kommentare hinzugefügt und Log-Dateien zu diesem hinzugefügt.
    Https://code.google.com/p/android-developer-preview/issues/detail?id=1753
    Scannen einer großen Anzahl von BLE-Tags
    Bluetooth Crash auf Samsung S4

  • Gibt es etwas Ähnliches wie Android XML-Zeichen in iOS?
  • Needing Context in Nicht-Aktivitätsklassen
  • Android appwidget listview nicht aktualisiert
  • Android - Anwendung (apk) Maximale Größe
  • Android - Wert in strings.xml ändern
  • Jquery ajax GET Anforderung, die zweimal ausführt
  • One Solution collect form web for “Bluetooth LE-Werbung schlägt beim Start und stoppt zyklisch”

    Ich habe deine App auf einem Moto G 2nd Gen getestet und laufe in das gleiche Problem.

    Ich habe es auf einem Nexus 9 Tablet mit Android 6.0 probiert, da konnte ich den Fehler nicht reproduzieren und es scheint zu funktionieren. Auch auf einem nexus Spieler mit Android 5.1.1 scheint es ohne Probleme zu laufen. Also entweder ist es wirklich ein Problem der Moto G oder – was ich denke, ist eher – ein Bug von Android 5.0.2, die in späteren Versionen gelöst wurde.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.