回答編集履歴

2

ダンプ結果書き忘れ、追記

2020/07/02 16:31

投稿

hope_mucci
hope_mucci

スコア4447

test CHANGED
@@ -58,6 +58,42 @@
58
58
 
59
59
  ```
60
60
 
61
+ ダンプの例:
62
+
63
+ ```text
64
+
65
+ AttrId: 0x0000 -- ServiceRecordHandle
66
+
67
+ UInt32: 0x0
68
+
69
+
70
+
71
+ AttrId: 0x0001 -- ServiceClassIdList
72
+
73
+ ElementSequence
74
+
75
+ Uuid16: 0x1000 -- ServiceDiscoveryServer
76
+
77
+ (中略)
78
+
79
+ AttrId: 0x0001 -- ServiceClassIdList
80
+
81
+ ElementSequence
82
+
83
+ Uuid16: 0x1124 -- HumanInterfaceDevice
84
+
85
+ (中略)
86
+
87
+ AttrId: 0x0001 -- ServiceClassIdList
88
+
89
+ ElementSequence
90
+
91
+ Uuid16: 0x1200 -- PnPInformation
92
+
93
+ (後略)
94
+
95
+ ```
96
+
61
97
  テキストでダンプしたデータのうち`AttrId: 0x0001`のレコードのUUIDがそのデバイスで対応するプロファイルのようです。
62
98
 
63
99
  これがうまく取得できればプロファイルもOKではないでしょうか。

1

プロファイルインストール方法、プロファイル一覧取得方法を追記

2020/07/02 16:31

投稿

hope_mucci
hope_mucci

スコア4447

test CHANGED
@@ -29,3 +29,39 @@
29
29
 
30
30
 
31
31
  ただ、可能なのはペアリングまでで必要なサービスのインストール等は自前で実施する必要があります。
32
+
33
+
34
+
35
+ ### 追記
36
+
37
+ サービスプロトコルを決め打ちで良いなら`BluetoothDeviceInfo.SetServiceState`でインストールできました。
38
+
39
+ ```C#
40
+
41
+ // ペアリング後
42
+
43
+ targetDevice.SetServiceState(BluetoothService.HumanInterfaceDevice, true);
44
+
45
+ ```
46
+
47
+ また、L2CapProtocolで`GetServiceRecords`を実行するとそのデバイスでインストール可能なサービスを取得できるみたいです。
48
+
49
+ ```C#
50
+
51
+ var serviceinfo = targetDevice.GetServiceRecords(BluetoothService.L2CapProtocol);
52
+
53
+ foreach(var record in serviceinfo){
54
+
55
+ ServiceRecordUtilities.Dump(Console.Error, record);
56
+
57
+ }
58
+
59
+ ```
60
+
61
+ テキストでダンプしたデータのうち`AttrId: 0x0001`のレコードのUUIDがそのデバイスで対応するプロファイルのようです。
62
+
63
+ これがうまく取得できればプロファイルもOKではないでしょうか。
64
+
65
+
66
+
67
+ ※Logicool M557 のマウスで試しています。