Android 5.0 und BLE-Werbung für benutzerdefinierte Service-UUID

8

Problem

Ich habe derzeit nur ein 5.0 Telefon, um dies zu testen (Moto E2 3G auf 5.0 Lollipop), aber ich bin nicht in der Lage, benutzerdefinierte UUIDs auf Android 5.0 zu werben. Wenn ich eine benutzerdefinierte UUID sage, meine ich eine, die nicht von der Bluetooth LE-Spezifikation vordefiniert ist

Auf meinem Nexus 6 Android 5.1 funktioniert alles gut.

Code

%Vor%

Beobachtetes Verhalten

Wenn ich das Werbepaket des Moto E2 mit einer benutzerdefinierten UUID ansehe, kann ich Folgendes sehen: Beachten Sie, dass es keine Informationen über die Service-UUID gibt:

Wenn ich eine zugewiesene Dienst-UUID auf dem Moto E2 ( 0000180D-0000-1000-8000-00805f9b34fb ) ankündige, kann ich sehen, dass die 16-Bit-Darstellung der UUID verfügbar ist:

Wenn ich eine benutzerdefinierte UUID auf dem Nexus 6 ankündige, sehe ich die UUID-Daten wie erwartet:

Kann jemand dieses Verhalten auf einem anderen 5.0-Gerät bestätigen? Muss ich mindestens die unterstützte Version 5.1 erstellen? Die einzige andere verwandte Referenz, die ich im Internet dazu finden konnte, ist dieses leere Ticket auf dem Android Bug Tracker .

    
Martin Konecny 16.07.2015, 16:32
quelle

2 Antworten

0

Ich kann bestätigen, dass dies ein Fehler auf dem Moto G 2014 ist, der 5.0.2 (und möglicherweise andere Geräte und / oder Versionen) ausführt.

Meine Problemumgehung besteht darin, einfach Ihre benutzerdefinierte UUID in die Herstellerdaten anstelle des Dienst-UUID-Felds einzufügen. Dies funktioniert nur, wenn Sie Zugriff auf die Zentrale haben, die nach ihr sucht, und Sie können die Herstellerdaten explizit prüfen, um zu sehen, ob die UUID bei der Entscheidung für eine Verbindung vorhanden ist.

Mit meiner Implementierung hatte ich die Kontrolle darüber, was die zentrale Kontrolle über die Verbindung entscheidet, also habe ich dieses Schema nur für alle Android-Geräte im Peripheriemodus übernommen, anstatt die normale "addServiceUuid" -Methode zu verwenden. Getestet auf Galaxy S6 (5.0.2) und Nexus 5X (6.0) und es funktioniert.

%Vor%

Stellen Sie sicher, dass Sie den Gerätenamen ausschließen. Bei einigen Geräten wird das Werbepaket andernfalls über die 31 Bytes gesetzt und die Werbung wird nicht gestartet.

    
jcady 24.03.2016 22:37
quelle
-1

Nur eine Handvoll Geräte unterstützt BLE-Werbung, obwohl die meisten Geräte BLE-Scans unterstützen. Soweit ich weiß, 5.0-Geräte werden nicht unterstützt.

Um zu überprüfen, ob Ihr Gerät von diesem Code in Ihrem Android-Code unterstützt wird. Sie können es überall dort verwenden.

%Vor%

Es ist die beste Methode, um herauszufinden, ob Ihr Gerät unterstützt wird oder nicht. Wenn es nicht unterstützt wird, können Sie nichts programmgesteuert tun, erwarten Sie, das zu kaufen, das unterstützt.

    
Atul Kumar 12.06.2017 10:13
quelle