Thanks Alex,

You are right, I had a problem in my code (creating by mistake QBluetoothServiceDiscoveryAgent in the main thread instead of the running thread). Once fixed everything is OK.

Sorry for the trouble and thanks again.

Philippe

Le 26-07-2018 10:24, Alex Blasche a écrit :
I can only speculate as to the nature of the failure. Bluetooth on
Android is mostly multi threaded already as the main processing is
done in Android main and custom threads already. The resulats are then
handed to the thread that owns QBluetoothServiceDiscoveryAgent. From
this perspective, it should not really be necessary to shift the Qt
classes into another thread.

In any case, during service discovery QBluetoothServiceInfo is only
used to tell the user the result of the discovery (aka
QBluetoothServiceDiscoveryAgent emits such an object as part of the
serviceDiscovered() signal). There is not a single internal
QObject::connect that passes QBluetoothServiceInfo as arguments
around. Therefore I must conclude that the problem is in your code.
The fact the discovery is not working may well be related to how you
process the serviceDiscovered() signal in your application which may
fail because of the missing metatype registration.

I suggest you enable Bluetooth QLoggingCategory (see official examples
for details) and check whether the internal infra really does not find
anything. If that works then you have to find the reason in how you
interact with the class.

--
Alex

________________________________________
From: Interest
<interest-bounces+alexander.blasche=qt...@qt-project.org> on behalf of
maitai <mai...@virtual-winds.org>
Sent: Thursday, 26 July 2018 9:08:00 AM
To: Interest@qt-project.org
Subject: [Interest] Android bluetooth in a thread

Hello,

Another question about QBluetooth, this time on Android:

If I run a bluetooth "client" class in a thread, discovery fails and I
have this weird message in the console:

QObject::connect: Cannot queue arguments of type 'QBluetoothServiceInfo'
(Make sure 'QBluetoothServiceInfo' is registered using
qRegisterMetaType().)

If I run the exact same class in the main thread, no such message and
everything works OK.

I know that on Mac OS bluetooth must be run in the main thread. Is it
the same for Android? What about other OS (Linux, Windows, iOS) ?

Thanks
Philippe.
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to