private void onDataRecived(byte[] data) { if (data.length == 4 && data[0] == (byte) 0xDE && data[1] == (byte) 0xAD && data[2] == (byte) 0xBE && data[3] == (byte) 0xEF) { dataValues.clear(); return; } else { for (int i = 4; i <= data.length; i += 4) { dataValues.add(ByteBuffer.wrap(data, i - 4, 4).order(ByteOrder.LITTLE_ENDIAN).getFloat()); } } // Log.d(TAG, "DATA " + bytesToHex(data) + " SIZE " + dataValues.size()) ; if (dataValues.size() == Detection.MFCC_SIZE) { receivedMfccDataCount++; String txt = ""; for (float val : dataValues) { txt += val + ","; } float[] vals = new float[dataValues.size()]; for (int i = 0; i < dataValues.size(); i++) { vals[i] = dataValues.get(i); } runDetection(vals); dataValues.clear(); sendClearToSend(); if (mBluetoothLeService != null) { Handler dataWatchdog = mBluetoothLeService.getDataTimeoutWatchdog(); dataWatchdog.postDelayed(dataWatchdogRunnable, DATA_WATCHDOG_PERIOD); } } }