Registriert seit: 21. Mär 2012
Ort: Hannover
891 Beiträge
Delphi 10.4 Sydney
|
AW: TBluetoothLE: DiscoverServices() erkennt unter Android manchmal keine Services
15. Sep 2019, 22:27
Delphi 10.3.2, sowohl bei einem Samsung S4-Tab (Android 9.0, dort aber selten) als auch bei einem Amazon Fire HD 10 (basiert auf Android 5.1, dort passiert es häufiger).
Ich habe es jetzt auch mal mit dem BLE-Scanner-Projekt ausprobiert, um meine Fehler auszuschließen.
Dort kommt er in folgendem Aufruf für DiscoverServices mit false zurück und das deutlich schneller als die in der Android-BLE-Implementierung definierten 15 Sekunden:
TThread.CreateAnonymousThread(procedure begin
if not BluetoothLE1.DiscoveredDevices[ListBox1.ItemIndex].DiscoverServices then
TThread.Synchronize(nil, procedure begin
Listbox2.Items.Add('- Discover services not allow');
Listbox1.Enabled := True;
end);
end).Start;
Mal passiert es, mal nicht, jetzt bin ich gerade wieder im Modus, es funktioniert auf beiden Devices.
Ich kann keine Gesetzmässigkeit nach dem Motto Android-Device neu gestartet oder BLE-Device neu gestartet erkennen.
Sobald er es einmal geschafft hat, geht es auch reproduzierbar.
Ich habe jetzt mal log-Ausgaben dazugepackt, auch in die Android BLE-Implementierung (System.Android.Bluetooth.pas) um vielleicht besser zu verstehen, was da schief geht. Noch habe ich nicht so richtig die Idee, v.a. weil es nicht reproduzierbar ist, aber so oft schief geht, dass es dem Enduser nicht zumutbar ist.
|