[Interest] Android bluetooth in a thread

maitai maitai at virtual-winds.org
Thu Jul 26 11:03:21 CEST 2018


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.io at qt-project.org> on behalf of
> maitai <maitai at virtual-winds.org>
> Sent: Thursday, 26 July 2018 9:08:00 AM
> To: Interest at 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 at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest
> _______________________________________________
> Interest mailing list
> Interest at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/interest



More information about the Interest mailing list