質問編集履歴
2
プログラムの説明追加
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Android端末 BLE受信
|
1
|
+
Android端末 BLE受信 同じ値を受信し続けてしまう問題[java]
|
test
CHANGED
@@ -5,6 +5,12 @@
|
|
5
5
|
10秒後、数字は1個増加しますが、また次の数字も10秒間に何度も受信しています。
|
6
6
|
|
7
7
|
現在原因分からず、質問させていただきます。
|
8
|
+
送信側はコメントに掲載しています。
|
9
|
+
|
10
|
+
現時点で、一度もonCharacteristicChangedが実行できていないのが問題なのかなと
|
11
|
+
個人的に考えています...
|
12
|
+
|
13
|
+
|
8
14
|
|
9
15
|
|
10
16
|
# 前提条件
|
1
プログラムの改変
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
ご覧いただきありがとうございます。
|
2
|
-
ラズパイ3からandroid(google pixel 6)に数値を増加させ
|
2
|
+
ラズパイ3からandroid(google pixel 6)に数値を10秒おきに増加させ、10秒おきにその数値を送るシステムを作っています。
|
3
|
+
同じ数値は一度のみしか送りません。
|
3
|
-
しかし、現在android側の受信で、
|
4
|
+
しかし、現在android側の受信で、同じ数字が10秒の間に何度も受信が確認できています。
|
4
|
-
|
5
|
-
|
5
|
+
10秒後、数字は1個増加しますが、また次の数字も10秒間に何度も受信しています。
|
6
|
+
|
7
|
+
現在原因分からず、質問させていただきます。
|
6
8
|
|
7
9
|
|
8
10
|
# 前提条件
|
@@ -69,13 +71,6 @@
|
|
69
71
|
|
70
72
|
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.BLUETOOTH_SCAN) != PackageManager.PERMISSION_GRANTED) {
|
71
73
|
|
72
|
-
// TODO: Consider calling
|
73
|
-
// ActivityCompat#requestPermissions
|
74
|
-
// here to request the missing permissions, and then overriding
|
75
|
-
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
|
76
|
-
// int[] grantResults)
|
77
|
-
// to handle the case where the user grants the permission. See the documentation
|
78
|
-
// for ActivityCompat#requestPermissions for more details.
|
79
74
|
return;
|
80
75
|
}
|
81
76
|
Log.d(TAG, "222");
|
@@ -97,26 +92,12 @@
|
|
97
92
|
if (String.valueOf(device).equals("B8:27:EB:F1:9C:71")) { // 指定されたMACアドレスと比較 研究室用
|
98
93
|
//if (String.valueOf(device).equals("B8:27:EB:98:26:06")) { // 指定されたMACアドレスと比較 家用
|
99
94
|
if (ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {
|
100
|
-
// TODO: Consider calling
|
101
|
-
// ActivityCompat#requestPermissions
|
102
|
-
// here to request the missing permissions, and then overriding
|
103
|
-
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
|
104
|
-
// int[] grantResults)
|
105
|
-
// to handle the case where the user grants the permission. See the documentation
|
106
|
-
// for ActivityCompat#requestPermissions for more details.
|
107
95
|
return;
|
108
96
|
}
|
109
97
|
Log.d(TAG, device.getName());
|
110
98
|
Log.d(TAG, "find!!!");
|
111
99
|
if (ActivityCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {
|
112
100
|
Log.d(TAG, "許可がないよ1");
|
113
|
-
// TODO: Consider calling
|
114
|
-
// ActivityCompat#requestPermissions
|
115
|
-
// here to request the missing permissions, and then overriding
|
116
|
-
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
|
117
|
-
// int[] grantResults)
|
118
|
-
// to handle the case where the user grants the permission. See the documentation
|
119
|
-
// for ActivityCompat#requestPermissions for more details.
|
120
101
|
return;
|
121
102
|
}
|
122
103
|
Log.d(TAG, "333");
|
@@ -169,6 +150,10 @@
|
|
169
150
|
}
|
170
151
|
if ((properties & BluetoothGattCharacteristic.PROPERTY_NOTIFY) != 0) {
|
171
152
|
gatt.setCharacteristicNotification(characteristic, true);
|
153
|
+
BluetoothGattDescriptor descriptor = characteristic.getDescriptor(UUID.fromString("00002902-0000-1000-8000-00805f9b34fb"));
|
154
|
+
descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
|
155
|
+
gatt.writeDescriptor(descriptor);
|
156
|
+
|
172
157
|
}
|
173
158
|
}
|
174
159
|
}
|
@@ -185,11 +170,21 @@
|
|
185
170
|
if (data != null && data.length > 0) {
|
186
171
|
String textData = new String(data, Charset.forName("UTF-8"));
|
187
172
|
Log.i(TAG, "Received data: " + textData);
|
188
|
-
|
189
|
-
}
|
173
|
+
}
|
174
|
+
gatt.readCharacteristic(characteristic);
|
175
|
+
|
190
176
|
}
|
191
177
|
};
|
178
|
+
@Override
|
179
|
+
public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
|
180
|
+
Log.d(TAG, "Characteristic Changed: " + characteristic.getUuid().toString());
|
181
|
+
byte[] data = characteristic.getValue();
|
182
|
+
if (data != null && data.length > 0) {
|
183
|
+
String textData = new String(data, Charset.forName("UTF-8"));
|
184
|
+
Log.i(TAG, "Received data: " + textData);
|
185
|
+
}
|
186
|
+
}
|
192
|
-
|
187
|
+
};
|
193
188
|
}
|
194
189
|
|
195
190
|
|
@@ -198,21 +193,28 @@
|
|
198
193
|
|
199
194
|
上記のコードを実行すると、以下のようなログが出ます。
|
200
195
|
```
|
201
|
-
111
|
202
|
-
222
|
203
|
-
isLeEnabled(): ON
|
204
|
-
find!!
|
205
|
-
333
|
206
|
-
444
|
207
|
-
555
|
208
|
-
666
|
209
|
-
onConnectionUpdated() - Device=B8:27:EB:F1:9C:71 interval=6 latency=0 timeout=500 status=0
|
210
|
-
1111111
|
211
|
-
777
|
212
|
-
888
|
213
|
-
999
|
214
|
-
101010
|
215
|
-
Received data: 0
|
196
|
+
Received data: 0
|
216
|
-
onConnectionUpdated() - Device=B8:27:EB:F1:9C:71 interval=36 latency=0 timeout=500 status=0
|
217
|
-
|
197
|
+
Received data: 0
|
198
|
+
Received data: 0
|
199
|
+
Received data: 0
|
200
|
+
Received data: 0
|
201
|
+
Received data: 0
|
202
|
+
Received data: 0
|
203
|
+
Received data: 0
|
204
|
+
Received data: 0
|
205
|
+
Received data: 0
|
206
|
+
Received data: 0
|
207
|
+
Received data: 0
|
208
|
+
Received data: 1
|
209
|
+
Received data: 1
|
210
|
+
Received data: 1
|
211
|
+
Received data: 1
|
212
|
+
Received data: 1
|
213
|
+
Received data: 1
|
214
|
+
Received data: 1
|
215
|
+
Received data: 1
|
216
|
+
Received data: 1
|
217
|
+
Received data: 1
|
218
|
+
Received data: 1
|
219
|
+
Received data: 1
|
218
220
|
```
|