Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Problem mit Classis Bluetooth bei Android 4.3/4.4 (https://www.delphipraxis.net/197334-problem-mit-classis-bluetooth-bei-android-4-3-4-4-a.html)

LabRat 31. Jul 2018 13:19

Problem mit Classis Bluetooth bei Android 4.3/4.4
 
Hallo zusammen,

ich habe meine Android-App, die ich zunächst unter Berlin (10.1.2) entwickelt habe, auf Tokyo (10.2.3) portiert.
Das hat grundsätzlich gut funktioniert. Aber : Die App hat unter anderem eine Funktion, mit der Daten per Classic Bluetooth von einem Messgerät abgerufen werden.
Ich habe dann festgestellt, dass die Bluetooth - Anbindung (BL Classic) unter Android 4.3 und 4.4 nicht mehr funktioniert.
Der Fehler stellt sich wie folgt dar :
Der Connect auf das Messgerät funktioniert. Aber sobald unter den genannten Betriebssystemen ein Zeichen übertragen wird, gibt es eine Exception.
Es wird ein Segmentation Fault (11) ausgegeben.

Ich verwende für die Verbindung einen TBluetoothSocket, der mit CreateClientsocket erzeugt wird. Nach dem Connect werden die Daten in einem Thread mittels TBluetoothSocket.RceiveData abgerufen.

Beim Debuggen zeigt sich, dass die Exception in der Unit System.Android.Bluetooth auftritt und zwar in der procedure TAndroidBluetoothSocket.TBluetoothSocketReader.Get BufferedData.

Das Problem tritt nicht auf bei Android 6 und Android 7. Es tritt nur bei meinen Android 4.3 u. Android 4.4 - Smartphones auf.
Ich habe derzeit kein Gerät mit Android 5 zur Verfügung, kann also zu dieser Version nichts sagen.

Was noch wichtig ist : Wenn ich die App mit Delphi Berlin (10.1.2) erzeuge, dann funktioniert die Übertragung mit allen Betriebssystemversionen fehlerfrei. Gemäß der Dokumentation zu Tokyo sollte eigentlich Android 4.3 und 4.4 weiter unterstützt werden.

Kennt jemand das Problem bzw. kann mir da jemand weiterhelfen ?

Vielen Dank

LabRat - die Laborratte

AuronTLG 31. Jul 2018 15:17

AW: Problem mit Classis Bluetooth bei Android 4.3/4.4
 
Hi,

ich meine fast, ich hätte letztens denselben Fehler gehabt, und ich nehme mal an, du arbeitest beim Datenabruf mit Threads...
Ich hatte mein Programm so gebaut gehabt, dass der Socket im Hauptthread kreiert sowie connected wird, und danach an den Thread übergeben wird, der sich um den Datenaustausch kümmert.

Dies hat bei mir ebenfalls beim ReceiveData geknallt, ich weiß nicht mehr, ob es diesselbe Stelle wie bei dir war, aber jedenfalls auch tief im System.Android.Bluetooth, also könnte hinkommen.

Die Lösung war für mich, den BluetoothSocket erst im Datenaustausch-Thread selbst zu erzeugen und zu connecten.

LabRat 31. Jul 2018 17:55

AW: Problem mit Classis Bluetooth bei Android 4.3/4.4
 
Hi,

ja genau, ich gehe so vor, wie von Dir beschrieben.

Ich werde das mal morgen ausprobieren.
Danke schon mal für den Hinweis.
Gruß
LabRat

LabRat 1. Aug 2018 09:55

AW: Problem mit Classis Bluetooth bei Android 4.3/4.4
 
Hi AuronTLG,

super, genau das war die Lösung. Ich hatte zwar den Connect bereits im Thread drin,
denn der würde ja den Hauptthread blockieren, aber den BluetoothSocket habe ich mir
im Hauptthread gezogen. Das habe ich jetzt einfach nur in den abrufenden Thread verlegt
und für Android 4.x funktioniert alles nun, wie für die anderen Betriebssystemversionen auch.

Vielen Dank noch einmal und viele Grüße

LabRat -- die Laborratte


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf