public void readChangedCharacteristic(BluetoothGattCharacteristic characteristic) { byte[] data; data = characteristic.getValue(); // *** this is going to get overwritten by next call, so make a queue if (data != null && data.length > 0 && (isConnected())) { messageBuffer.append(new String(data, 0, data.length)); if(JsonStreamer.containsJson(messageBuffer.toString())) { int delimiterIndex = messageBuffer.indexOf(DELIMITER); if (delimiterIndex != -1) { byte message[] = messageBuffer.substring(0, delimiterIndex + 1).getBytes(); BLEInputStream.getInstance().putDataInBuffer(message); messageBuffer.delete(0, delimiterIndex + 1); } } else { BLEInputStream.getInstance().putDataInBuffer(data); } } }
@Test public void paritalJsonDoesntContainJson() { assertFalse(JsonStreamer.containsJson("{\"name\": \"foo\"}\u0000\u0001\u0002")); }
@Test public void notJsonDoesntContainJson() { assertFalse(JsonStreamer.containsJson("\u0000\u0001\u0002")); }
@Test public void jsonContainsJson() { assertTrue(JsonStreamer.containsJson("{\"name\": \"foo\"}\u0000")); }
synchronized(this) { if(mStreamHandler == null) { if(JsonStreamer.containsJson(new String(bytes))) { mStreamHandler = new JsonStreamer(); Log.i(getTag(), "Source is sending JSON");