AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung TBluetoothLE: DiscoverServices() erkennt unter Android manchmal keine Services
Thema durchsuchen
Ansicht
Themen-Optionen

TBluetoothLE: DiscoverServices() erkennt unter Android manchmal keine Services

Ein Thema von philipp.hofmann · begonnen am 15. Sep 2019 · letzter Beitrag vom 5. Apr 2020
Antwort Antwort
knaeuel

Registriert seit: 2. Jul 2007
110 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: TBluetoothLE: DiscoverServices() erkennt unter Android manchmal keine Services

  Alt 26. Sep 2019, 14:42
Problem gelöst?
Wolfgang
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.094 Beiträge
 
Delphi 12 Athens
 
#2

AW: TBluetoothLE: DiscoverServices() erkennt unter Android manchmal keine Services

  Alt 27. Sep 2019, 19:42
Ich glaube nicht, aber ist es in QP erfasst?
(sorry, habe nicht den ganzen Thread nochmal nach dieser Info abgesucht)
Falls noch nicht erfasst umgehend erfassen!
Lt. Roadmap soll ja im in Entwicklung befindlichen 10.3.3 das AppThethering
verbessert werden, evtl. könnten in dem Rahmen auch andere Fioxes zu BLE einfließen?
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
942 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TBluetoothLE: DiscoverServices() erkennt unter Android manchmal keine Services

  Alt 28. Okt 2019, 10:49
Hi,

Ich habe einen anderen Workaround für das Problem gefunden.
Zwischen
res:=bleDevice.Connect();
und
res:=bleDevice.DiscoverServices();
muss für Android bei langsamen Tablets (oder Tablets mit Android <6.0, kann den echten Grund nicht wirklich benennen) ein
Sleep(1000)
eingetragen werden und dann findet er auch stabil Services. Es reicht auch nicht aus, nach einer Pause ein zweites DiscoverServices nachzuschießen, es musste bei mir zwingend vor dem ersten sein, damit es funktioniert. Mit dem Workaround kann ich gut leben.

Grüße, Philipp
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.094 Beiträge
 
Delphi 12 Athens
 
#4

AW: TBluetoothLE: DiscoverServices() erkennt unter Android manchmal keine Services

  Alt 28. Okt 2019, 21:35
Wurde das Problem schon in QP erfasst? Falls nein bitte tun und falls ja den Workaround von heute als Kommentar oder als Textänderung hinzufügen, damit wir das in Zukunft mal "out of the box" gefixed bekommen.
  Mit Zitat antworten Zitat
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
341 Beiträge
 
Delphi 12 Athens
 
#5

AW: TBluetoothLE: DiscoverServices() erkennt unter Android manchmal keine Services

  Alt 21. Jan 2020, 08:37
Zitat:
Wie ich weiter oben schon schrieb, damit schlage ich mich auch manchmal rum. Eine Besserung hat mein Workaround aus
https://www.delphipraxis.net/201976-...-services.html
gebracht. Du kannst ja mal ausprobieren, ob es auch bei dir hilft.
Basierend auf diesem Thread mache ich mal hier weiter:

Ich habe das Ganze mal so ausprobiert, wie hier beschrieben mit einem Connect -> Sleep(1000) -> DiscoverServices, hat aber leider nicht geholfen.
Das Problem ist bei mir auch anders:

Es ist nicht so, dass das DiscoverServices nichts findet, sondern dass es direkt false zurückliefert.
Auf meinem S10 mit Android 10 schlägt das DiscoverServices jedes Mal auf diese Weise fehl in meiner App. Die Demo "BLEScanner" findet die Services jedoch jedesmal, obwohl der Code praktisch 1 zu 1 identisch ist.

Nachtrag:

Ich hab das Demoprojekt "BLEScanner" nahtlos als Form in meine App eingefügt, woraufhin damit haargenau dasselbe Problem auftritt. Es muss also irgendwas mit der App sein, was das Problem verursacht...

Nachtrag 2:

Demoprojekt "BLEScanner" mit 10.3.3 und brandneuer SDK kompiliert funktioniert ebenfalls nicht mehr mit dem S10. Mit dem S9+ weiterhin problemlos. Was ein Schwachsinn...

Geändert von AuronTLG (21. Jan 2020 um 09:09 Uhr)
  Mit Zitat antworten Zitat
philipp.hofmann

Registriert seit: 21. Mär 2012
Ort: Hannover
942 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: TBluetoothLE: DiscoverServices() erkennt unter Android manchmal keine Services

  Alt 21. Jan 2020, 11:11
Das ist leider das Verhalten: das Sleep vor dem DiscoverServices sorgt in den meisten Fällen nur dafür, dass danach auch wirklich etwas zurückkommt. Mit der Schnelligkeit der Antwort von DiscoverServices hat es nichts zu tun. Das antwortet immer schnell, auch wenn es (noch) nichts zu antworten hat.
  Mit Zitat antworten Zitat
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
341 Beiträge
 
Delphi 12 Athens
 
#7

AW: TBluetoothLE: DiscoverServices() erkennt unter Android manchmal keine Services

  Alt 21. Jan 2020, 15:28
Und bei euch funktioniert das alles auch mit Android 10 Smartphones?

Dann würde mich nämlich mal eure Konfiguration interessieren (SDK, NDK etc...), denn so langsam gehen mir die Ideen aus.

Ich benutze Delphi 10.3.3 mit der Android SDK 25.2.5 32bit. Alles, was man über Android Tools bekommen ist, ist auf dem neusten Stand, d.h. NDK, Build Tools, Platform Tools, Bibliotheken etc.
AndroidManifest.Templates sind auch sicherheitshalber gelöscht, Projekt bereinigt worden etc...

Sobald ich mit dem Samsung S10 das DiscoverServices ausführe, liefert es false zurück. Lustigerweise, wenn ich die App direkt danach komplett schließe und wieder aufmache, funktioniert es einmal. Nach weiterem Schließen und wieder aufmachen nicht etc...
Völlig bekloppt. Und ich finde keine Möglichkeit, festzustellen, warum DiscoverServices false liefert.
Mehrmals versuchen mit Sleep dazwischen bringt nichts, die hier erwähnte Konstruktion mit Connect -> Sleep -> DiscoverServices bringt auch nichts, aus dem Thread rausnehmen und im Hauptthread ausführen bringt nichts.
  Mit Zitat antworten Zitat
Peter Baudisch

Registriert seit: 28. Mär 2020
3 Beiträge
 
#8

AW: TBluetoothLE: DiscoverServices() erkennt unter Android manchmal keine Services

  Alt 5. Apr 2020, 19:17
Hallo zusammen,

ich auch dieses Problem, DiscoverServices() liefert nach gewisser Zeit "false" zurück.

Meine Applikation ist so, dass ich das BLE Modul immer wieder trenne um mich dann neu zu verbinden,
aus Sicherheitgründen, wenn von meinem BLE keine Daten mehr kommen.

Unter IOS liefert DiscoverServices()sofort nach dem Start hin und wieder mal false. Ich rufe es dann erneut aus, und dann klappt alles wieder.

Unter Android (getestet 6.0 oder 7.1) tritt der Fehler nach etlichen Verbindungs-Neustarts auf, und bleibt dann kontinuierlich bis zum Neustart der App. Die hier beschriebene Maßnahme mit Enable false-true nutzt da nichts.
Auch Verzögerungszeiten ergaben keine Lösung.

@AuronTLG: Hast Du Dein Problem vom 23.01.2020 mittlerweile gelöst ?

Besten Dank
Peter
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz