[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