Zitat:
(klar ich muss ja auch das 3500ms OnEndDiscoverDevices abwarten
Sind dies nicht 1.500ms? Ich warte immer 2.000ms damit dies passt.
Ja sorry, mein Typo.
Ich habe da generell 3500ms, um dem Phone etwas mehr Zeit zu geben.
Wie gesagt, ich mache jetzt auf dem Mac immer ein
BluetoothManagerLE.StartDiscovery(4000,Erste-Filter-UUID);
BluetoothManagerLE.StartDiscovery(4000,Zweite-Filter-UUID);
...
BluetoothManagerLE.StartDiscovery(4000);
Ich habe gestern mit dem Demo 1:1 getestet, weil ich dachte das ging schon nicht.
Da war bei einem Filter aber Alles OK, er findet auch mehrere gleiche Geräte.
Gerade habe mit 2. Filter getestet, das geht dann nicht mehr, findet weder das eine noch das Andere.
Delphi-Quellcode:
TRAINER_SERVICE_WAHOO: TBluetoothUUID = '{0000FFB0-0000-1000-8000-00805F9B34FB}';
TRAINER_SERVICE_OTHER: TBluetoothUUID = '{00000020-0000-1000-8000-00805F9B34FB}';
...
bluetoothLEDeviceTypeHelpList.add( TRAINER_SERVICE_WAHOO ); //<== stimmt ,es geht nur mit einem Service in der Liste
bluetoothLEDeviceTypeHelpList.add( TRAINER_SERVICE_OTHER );
Ich denke genau deshalb hatte ich das schon vor Jahren zu den Akten gelegt.
Nur hatte ich damals auch Probleme auf iOS und Android, soweit ich noch sagen kann,
deshalb wundert es mich das es jetzt bei Dir damit funktioniert.
Analyse im OnDiscoverLEDevice:
Ich mache es im Prinzip auch so, nur es kommen im BluetoothLEDiscoverLEDevice gerne 4-5 mal das gleiche Device, deshalb speichere ich das Ergebnis nur EINMAL in ein Dictionary (oder Map), und werte das erst später im OnEndDiscoverDevices aus.
Die ganzen Uninteressanten, insbesondere z.B. die mit DeviceName = '', lade ich gar nicht erst ins Dictionary, und halte es dabei schön sauber.
Weil das Analysieren und Holen der Service UUID auch wieder mehr Zeit kostet.