複数のBluetoothアダプタがある場合、QBluetoothSocket
を作成するとき、またはQBluetoothSocket::connectToService()
を呼び出すときに使用するローカルアダプタを指定できますか?私はLinux/BlueZだけでなく、Android(複数のBluetoothアダプタがBluetoothスタックでサポートされているかどうかは明らかではありません)に興味があります。 Qtの5.6.2のようQBluetoothSocketでサービスに接続するときにローカルアダプタを選択する方法
0
A
答えて
0
、そのような機能はまだ離れQBluetoothLocalDevice(QBluetoothAddress)
、QBluetoothDeviceDiscoveryAgent(QBluetoothAddress)
、QBluetoothServiceDiscoveryAgent(QBluetoothAddress)
と QBluetoothServer::listen(QBluetoothAddress)
から存在しません。 AndroidのBluetoothスタックは複数のドングルをサポートしているようではないので、これはLinuxでは意味をなさないが、少なくともAndroidではない。
はしかし、のbluezとLinux上で、次はのbluezのC APIを使用して、ローカルアダプタを選択することが可能である:
#include <sys/socket.h>
#include <bluetooth/bluetooth.h>
#include <bluetooth/rfcomm.h>
...
QBluetoothSocket* socket = new QBluetoothSocket(QBluetoothServiceInfo::RfcommProtocol);
struct sockaddr_rc loc_addr;
loc_addr.rc_family = AF_BLUETOOTH;
int socketDescriptor = ::socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
if(socketDescriptor < 0){
qCritical() << strerror(errno);
return;
}
const char* localMacAddr = "XX:XX:XX:XX:XX:XX"; //MAC address of the local adapter
str2ba(localMacAddr, &(loc_addr.rc_bdaddr));
if(bind(socketDescriptor, (struct sockaddr*)&loc_addr, sizeof(loc_addr)) < 0){
qCritical() << strerror(errno);
return;
}
if(!socket->setSocketDescriptor(socketDescriptor, QBluetoothServiceInfo::RfcommProtocol, QBluetoothSocket::UnconnectedState)){
qCritical() << "Couldn't set socketDescriptor";
return;
}
socket->connectToService(...);
プロジェクト.pro
には、次のものが含まれている必要があります
CONFIG += link_pkgconfig
PKGCONFIG += bluez
対応しますこれをQt APIに統合するための機能要求:https://bugreports.qt.io/browse/QTBUG-57382
関連する問題
- 1. NSURLSession接続に特定のネットワークインターフェイスを選択する方法は?
- 2. テンソルフローでニューロンを接続する方法を選択できますか?
- 3. SQL接続チェックでリンクサーバーから選択する方法
- 4. javascriptから同じソリューションでWebサービスに接続する方法
- 5. IronPythonを使用してWCFサービスに接続する方法
- 6. WebサービスをAndroidアプリケーションに接続する方法
- 7. Windowsサービスをコンソールセッションに接続する方法
- 8. WCFサービスのURIを動的に選択する方法は?
- 9. 実行時にコンポーネントのAngular 2サービスを選択する方法
- 10. NativeScriptでWebサービス使用API RESTfulサービスに接続する方法は?
- 11. TwitterとFacebookに接続する方法
- 12. 接続文字を同時に選択
- 13. SSKeychainのアカウントとサービスの値を選択する方法
- 14. IIS 7.5でホストされているWCFサービスに接続するときに接続がリセットされる
- 15. ネットワーク接続に依存するAndroidサービスの単体テスト方法
- 16. Kubernetes:クラスタの外からサービスに接続する方法は?
- 17. TCPClient接続用に特定のイーサネットデバイスを選択する
- 18. ソケットクライアントを自動的に再接続する設計の選択
- 19. SQLに接続するときのvb.net windowsサービスのエラー
- 20. Appleプッシュ通知サービスに接続するときの禁止アクセス
- 21. インテントを処理するサービスを選択する方法
- 22. boto3を使用してCloudFrontに接続する際にAWSプロファイルを選択する方法
- 23. YMSG(Yahoo IMサービス)をサーバーIPで接続する方法
- 24. ソケット接続と同じ方法でWCFサービスを使用できますか?
- 25. Webサービス呼び出しの永続接続をオフにする方法
- 26. WebアプリケーションにWebサービスを接続する
- 27. 2行を接続するMySQLの選択クエリを書く方法は?
- 28. FragmentTabを選択したときに「アクティブ化」する方法
- 29. コードでデスクトップドックに接続する方法
- 30. クラウドサーバでcassandraに接続する方法