void sendHeadVector() { mHeadTracker.getLastHeadView(headView, 0); // Matrix.rotateM(headView, 0, 180, 0, 0, 1); //upside down SensorManager.remapCoordinateSystem( headView, SensorManager.AXIS_Z, SensorManager.AXIS_MINUS_Y, headView); // SensorManager.remapCoordinateSystem(headView, SensorManager.AXIS_MINUS_Z, // SensorManager.AXIS_Y, headView); //rotate for sensor. PutDataMapRequest req = PutDataMapRequest.create("/head"); for (int i = 0; i < 16; ++i) { req.getDataMap().putFloat(HEAD_PRE + i, headView[i]); } req.getDataMap().putLong("time", new Date().getTime()); Wearable.DataApi.putDataItem(mGoogleApiClient, req.asPutDataRequest()) .setResultCallback( new ResultCallback<DataApi.DataItemResult>() { @Override public void onResult(DataApi.DataItemResult dataItemResult) { if (dataItemResult.getStatus().isSuccess()) { Log.d("TEST", "Data item set: " + dataItemResult.getDataItem().getUri()); } else if (dataItemResult.getStatus().isCanceled()) { Log.d("TEST", "canceled"); } else if (dataItemResult.getStatus().isInterrupted()) { Log.d("TEST", "interrupted"); } } }); }