コード例 #1
0
  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);
      }
    }
  }