/** * Synchronizes the UART configurations between handheld and wearables. * Call this when configuration has been created or altered. * @return pending result */ public PendingResult<DataApi.DataItemResult> onConfigurationAddedOrEdited(final long id, final UartConfiguration configuration) { if (mGoogleApiClient == null || !mGoogleApiClient.isConnected()) return null; final PutDataMapRequest mapRequest = PutDataMapRequest.create(Constants.UART.CONFIGURATIONS + "/" + id); final DataMap map = mapRequest.getDataMap(); map.putString(Constants.UART.Configuration.NAME, configuration.getName()); final ArrayList<DataMap> commands = new ArrayList<>(UartConfiguration.COMMANDS_COUNT); for (Command command : configuration.getCommands()) { if (command != null && command.isActive()) { final DataMap item = new DataMap(); item.putInt(Constants.UART.Configuration.Command.ICON_ID, command.getIconIndex()); item.putString(Constants.UART.Configuration.Command.MESSAGE, command.getCommand()); item.putInt(Constants.UART.Configuration.Command.EOL, command.getEolIndex()); commands.add(item); } } map.putDataMapArrayList(Constants.UART.Configuration.COMMANDS, commands); final PutDataRequest request = mapRequest.asPutDataRequest(); return Wearable.DataApi.putDataItem(mGoogleApiClient, request); }
/** * Create new Data Request and send it to the phone */ private void sendNextGestureData() { PutDataMapRequest dataMapRequest = getNewSensorsDataMapRequest(); DataMap dataMap = dataMapRequest.getDataMap(); List<GestureDataHolder.EventData> nextAccelerometerData = gestureDataHolder.pollNextAccelerometerData(); if (nextAccelerometerData.size() > 0){ dataMap.putDataMapArrayList("accelerometer", convertEventsToDataMapList(nextAccelerometerData)); } List<GestureDataHolder.EventData> nextGyroscopeData = gestureDataHolder.pollNextGyroscopeData(); if (nextGyroscopeData.size() > 0){ dataMap.putDataMapArrayList("gyroscope", convertEventsToDataMapList(nextGyroscopeData)); } dataSender.sendData(dataMapRequest); }
/** * Overwrites the current config {@link DataItem}'s {@link DataMap} with {@code newConfig}. * If the config DataItem doesn't exist, it's created. */ public static void putConfigDataItem(GoogleApiClient googleApiClient, DataMap newConfig) { PutDataMapRequest putDataMapRequest = PutDataMapRequest.create(PATH_WITH_FEATURE); putDataMapRequest.setUrgent(); DataMap configToPut = putDataMapRequest.getDataMap(); configToPut.putAll(newConfig); Wearable.DataApi.putDataItem(googleApiClient, putDataMapRequest.asPutDataRequest()) .setResultCallback(new ResultCallback<DataApi.DataItemResult>() { @Override public void onResult(DataApi.DataItemResult dataItemResult) { if (Log.isLoggable(TAG, Log.DEBUG)) { Log.d(TAG, "putDataItem result status: " + dataItemResult.getStatus()); } } }); }
@Override public void onDataChanged(DataEventBuffer dataEvents) { Log.d(LOG_TAG, " in data changed"); for (DataEvent event : dataEvents) { if (event.getType() == DataEvent.TYPE_CHANGED) { // DataItem changed DataItem item = event.getDataItem(); if (item.getUri().getPath().compareTo(WEATHER_PATH) == 0) { DataMap dataMap = DataMapItem.fromDataItem(item).getDataMap(); weather_id = dataMap.getInt(WEATHER_ID); high_temp = dataMap.getDouble(HIGH_TEMP); low_temp = dataMap.getDouble(LOW_TEMP); } } else if (event.getType() == DataEvent.TYPE_DELETED) { // DataItem deleted } } invalidate(); }
@Override /** * Exception handler with Crashlytics support, also it will be shown in logcat. */ public void handleException(Throwable throwable, DataMap map) { Timber.d("HandleException %s", throwable); Crashlytics.setBool("wear_exception", true); Crashlytics.setString("board", map.getString("board")); Crashlytics.setString("fingerprint", map.getString("fingerprint")); Crashlytics.setString("model", map.getString("model")); Crashlytics.setString("manufacturer", map.getString("manufacturer")); Crashlytics.setString("product", map.getString("product")); Crashlytics.setString("api_level", map.getString("api_level")); Crashlytics.logException(throwable); }
/** * This method read the UART configurations from the DataApi and populates the adapter with them. */ private void populateConfigurations() { if (mGoogleApiClient.isConnected()) { final PendingResult<DataItemBuffer> results = Wearable.DataApi.getDataItems(mGoogleApiClient, Uri.parse("wear:" + Constants.UART.CONFIGURATIONS), DataApi.FILTER_PREFIX); results.setResultCallback(new ResultCallback<DataItemBuffer>() { @Override public void onResult(final DataItemBuffer dataItems) { final List<UartConfiguration> configurations = new ArrayList<>(dataItems.getCount()); for (int i = 0; i < dataItems.getCount(); ++i) { final DataItem item = dataItems.get(i); final long id = ContentUris.parseId(item.getUri()); final DataMap dataMap = DataMapItem.fromDataItem(item).getDataMap(); final UartConfiguration configuration = new UartConfiguration(dataMap, id); configurations.add(configuration); } mAdapter.setConfigurations(configurations); dataItems.release(); } }); } }
@Override public void onDataChanged(DataEventBuffer dataEvents) { LOGD(TAG, "onDataChanged: " + dataEvents + " for " + getPackageName()); for (DataEvent event : dataEvents) { LOGD(TAG, "Uri is: " + event.getDataItem().getUri()); DataMapItem mapItem = DataMapItem.fromDataItem(event.getDataItem()); String path = event.getDataItem().getUri().getPath(); if (event.getType() == DataEvent.TYPE_CHANGED) { if (PATH_RESPONSE.equals(path)) { // we have a response DataMap data = mapItem.getDataMap(); saveFeedback(data); } } else if (event.getType() == DataEvent.TYPE_DELETED) { if (path.startsWith(SessionAlarmService.PATH_FEEDBACK)) { Uri uri = event.getDataItem().getUri(); dismissLocalNotification(uri.getLastPathSegment()); } } } }
/** * This method is activated when a data is receive from the phone * @param dataEvents */ @Override public void onDataChanged(DataEventBuffer dataEvents) { DataMap dataMap; for (DataEvent event : dataEvents) { // Check the data type if (event.getType() == DataEvent.TYPE_CHANGED) { // Check the data path dataMap = DataMapItem.fromDataItem(event.getDataItem()).getDataMap(); //get the new rule send by the phone CustomRules rule= getRuleFromMap(dataMap); //save the rule in the database RulesRepository.getInstance().insertOrUpdate(rule); //send the value to the activty to change the display of bar Intent messageIntent = new Intent(); messageIntent.setAction(Intent.ACTION_SEND); messageIntent.putExtra(Const.KEY_BROADCASTdATA, dataMap.toBundle()); LocalBroadcastManager.getInstance(this).sendBroadcast(messageIntent); } } }
private DataMap generateDataMap(CustomRules aRule) { DataMap dataMap=new DataMap(); dataMap.putLong(Const.KEY_CURRENTTIMESTAMP,System.currentTimeMillis()); dataMap.putLong(Const.KEY_RULE_ID,aRule.getId()); dataMap.putString(Const.KEY_RULE_CATEGORY,aRule.getCategory()); dataMap.putString(Const.KEY_RULE_CONSTRAINT1,aRule.getConstraint_1()); dataMap.putString(Const.KEY_RULE_CONSTRAINT2,aRule.getConstraint_2()); dataMap.putString(Const.KEY_RULE_CONSTRAINT3,aRule.getConstraint_3()); //if null, we send the number -100000. We will have to check on the other side dataMap.putDouble(Const.KEY_RULE_VAL1_MIN, formatValue(aRule.getVal_1_min())); dataMap.putDouble(Const.KEY_RULE_VAL1_MAX,formatValue(aRule.getVal_1_max())); dataMap.putDouble(Const.KEY_RULE_VAL2_MIN,formatValue(aRule.getVal_2_min())); dataMap.putDouble(Const.KEY_RULE_VAL2_MAX, formatValue(aRule.getVal_2_max())); return dataMap; }
/** * * @param dataMap the data map that contains rules information * @return the rules created though datamap */ private CustomRules extractRulesFromDataMap(DataMap dataMap) { CustomRules rule=new CustomRules(); rule.setId(dataMap.getLong(Const.KEY_RULE_ID)); rule.setCategory(dataMap.getString(Const.KEY_RULE_CATEGORY)); rule.setVal_1_min(formatNumber(dataMap.getDouble(Const.KEY_RULE_VAL1_MIN))); rule.setVal_1_max(formatNumber(dataMap.getDouble(Const.KEY_RULE_VAL1_MAX))); rule.setVal_2_min(formatNumber(dataMap.getDouble(Const.KEY_RULE_VAL2_MIN))); rule.setVal_2_max(formatNumber(dataMap.getDouble(Const.KEY_RULE_VAL2_MAX))); rule.setConstraint_1(dataMap.getString(Const.KEY_RULE_CONSTRAINT1)); rule.setConstraint_2(dataMap.getString(Const.KEY_RULE_CONSTRAINT2)); rule.setConstraint_3(dataMap.getString(Const.KEY_RULE_CONSTRAINT3)); return rule; }
/** * Used when a user update a rule. It will be send to the watch * @param rule : The current rule we want to send though a datamap (container) * @return The datamap that contain the rule */ private DataMap prepareDataMap(CustomRules rule) { //create the value container DataMap dataContainer=new DataMap(); //insert the rule value dataContainer.putLong(Const.KEY_RULE_ID,rule.getId()); dataContainer.putString(Const.KEY_RULE_CATEGORY,rule.getCategory()); dataContainer.putString(Const.KEY_RULE_CONSTRAINT1,rule.getConstraint_1()); dataContainer.putString(Const.KEY_RULE_CONSTRAINT2,rule.getConstraint_2()); dataContainer.putString(Const.KEY_RULE_CONSTRAINT3,rule.getConstraint_3()); dataContainer.putDouble(Const.KEY_RULE_VAL1_MIN,formatDataMapValue( rule.getVal_1_min())); dataContainer.putDouble(Const.KEY_RULE_VAL1_MAX,formatDataMapValue(rule.getVal_1_max())); dataContainer.putDouble(Const.KEY_RULE_VAL2_MIN,formatDataMapValue(rule.getVal_2_min())); dataContainer.putDouble(Const.KEY_RULE_VAL2_MAX,formatDataMapValue(rule.getVal_2_max())); dataContainer.putLong(Const.KEY_CURRENTTIMESTAMP,System.currentTimeMillis()); return dataContainer; }
@Override public void onDataChanged(DataEventBuffer dataEvents) { super.onDataChanged(dataEvents); for (DataEvent event : dataEvents) { if (event.getType() == DataEvent.TYPE_CHANGED) { // DataItem changed DataItem item = event.getDataItem(); if (item.getUri().getPath().compareTo("/SHAKEINTENSITY") == 0) { DataMap dataMap = DataMapItem.fromDataItem(item).getDataMap(); Log.e("Data Event", "value->"+dataMap.getString(SHAKE_INTENSITY_KEY)); LocalStoreUtils.setShakeIntensity(dataMap.getString(SHAKE_INTENSITY_KEY), this); } } } }
private void sendActiveBtDeviceData() {//KS if (is_using_bt) {//only required for Collector running on watch forceGoogleApiConnect(); ActiveBluetoothDevice btDevice = ActiveBluetoothDevice.first(); if (btDevice != null) { if (wear_integration) { DataMap dataMap = new DataMap(); Log.d(TAG, "sendActiveBtDeviceData name=" + btDevice.name + " address=" + btDevice.address + " connected=" + btDevice.connected); dataMap.putLong("time", new Date().getTime()); // MOST IMPORTANT LINE FOR TIMESTAMP dataMap.putString("name", btDevice.name); dataMap.putString("address", btDevice.address); dataMap.putBoolean("connected", btDevice.connected); new SendToDataLayerThread(WEARABLE_ACTIVEBTDEVICE_DATA_PATH, googleApiClient).executeOnExecutor(xdrip.executor, dataMap); } } } else { Log.d(TAG, "Not sending activebluetoothdevice data as we are not using bt"); } }
@Override protected Void doInBackground(DataMap... params) { try { final NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes(googleApiClient).await(15, TimeUnit.SECONDS); for (Node node : nodes.getNodes()) { for (DataMap dataMap : params) { PutDataMapRequest putDMR = PutDataMapRequest.create(path); putDMR.getDataMap().putAll(dataMap); PutDataRequest request = putDMR.asPutDataRequest(); DataApi.DataItemResult result = Wearable.DataApi.putDataItem(googleApiClient, request).await(15, TimeUnit.SECONDS); if (result.getStatus().isSuccess()) { Log.d(TAG, "DataMap: " + dataMap + " sent to: " + node.getDisplayName()); } else { Log.d(TAG, "ERROR: failed to send DataMap"); } } } } catch (Exception e) { Log.e(TAG, "Got exception sending data to wear: " + e.toString()); } return null; }
/** * Overwrites (or sets, if not present) the keys in the current config {@link com.google.android.gms.wearable.DataItem} with * the ones appearing in the given {@link com.google.android.gms.wearable.DataMap}. If the config DataItem doesn't exist, * it's created. * <p> * It is allowed that only some of the keys used in the config DataItem appear in * {@code configKeysToOverwrite}. The rest of the keys remains unmodified in this case. */ public static void overwriteKeysInConfigDataMap(final GoogleApiClient googleApiClient, final DataMap configKeysToOverwrite, final String path) { DigitalWatchFaceUtil.fetchConfigDataMap(googleApiClient, new FetchConfigDataMapCallback() { @Override public void onConfigDataMapFetched(DataMap currentConfig) { DataMap overwrittenConfig = new DataMap(); overwrittenConfig.putAll(currentConfig); overwrittenConfig.putAll(configKeysToOverwrite); DigitalWatchFaceUtil.putConfigDataItem(googleApiClient, overwrittenConfig, path); } } , path); }
/** * Updates the color of a UI item according to the given {@code configKey}. Does nothing if * {@code configKey} isn't recognized. * * @return whether UI has been updated */ private boolean updateUiForKey(String configKey, DataMap config) { if (configKey.equals(DigitalWatchFaceUtil.KEY_MAX_TEMP)) { maxTV.setText(config.getString(DigitalWatchFaceUtil.KEY_MAX_TEMP)+(char) 0x00B0 ); } else if (configKey.equals(DigitalWatchFaceUtil.KEY_MIN_TEMP)) { minTV.setText(config.getString(DigitalWatchFaceUtil.KEY_MIN_TEMP)+(char) 0x00B0 ); } else if (configKey.equals(DigitalWatchFaceUtil.KEY_BATTERY_PERCENATGE)) { batteryPercent.setText(config.getString(DigitalWatchFaceUtil.KEY_BATTERY_PERCENATGE)); } else if (configKey.equals(DigitalWatchFaceUtil.KEY_WEATHER_TYPE)) { String id = config.getString(DigitalWatchFaceUtil.KEY_WEATHER_TYPE); resId = DigitalWatchFaceUtil.getArtResourceForWeatherCondition(Integer.parseInt(id)); weatherIcon.setImageDrawable(getResources().getDrawable(resId)); } else { Log.w("WatchFace", "Ignoring unknown config key: " + configKey); return false; } return true; }
@Override public void onDataChanged(DataEventBuffer dataEvents) { for (int i = 0; i < dataEvents.getCount(); i++) { DataEvent event = dataEvents.get(i); if (event.getType() == DataEvent.TYPE_CHANGED && event.getDataItem().getUri().getPath().equals(APP_DATA_UPDATE_REQUEST)) { DataMap dataMap = DataMapItem.fromDataItem(event.getDataItem()).getDataMap(); Asset asset = dataMap.getAsset("dataIcon"); WatchFaceService.highTemp = dataMap.getInt("dataHigh"); WatchFaceService.lowTemp = dataMap.getInt("dataLow"); doLoadBitmap(asset); } } }
public void addToWatchSet(DataMap dataMap) { Log.d(TAG, "addToWatchSet bgDataList.size()=" + bgDataList.size()); ArrayList<DataMap> entries = dataMap.getDataMapArrayList("entries"); if (entries != null) { Log.d(TAG, "addToWatchSet entries.size()=" + entries.size()); for (DataMap entry : entries) { addDataMap(entry); } } else { addDataMap(dataMap); } for (int i = 0; i < bgDataList.size(); i++) { if (bgDataList.get(i).timestamp < (new Date().getTime() - (1000 * 60 * 60 * 5))) { Log.d(TAG, "addToWatchSet Remove bgDataList.get(i).timestamp: " + JoH.dateTimeText((long)bgDataList.get(i).timestamp)+ " i: " + i); bgDataList.remove(i); //Get rid of anything more than 5 hours old } } }
@Override public void onDataChanged(DataEventBuffer dataEventBuffer) { for (DataEvent dataEvent : dataEventBuffer) { if (dataEvent.getType() != DataEvent.TYPE_CHANGED) { continue; } DataItem dataItem = dataEvent.getDataItem(); if (!dataItem.getUri().getPath().equals( DigitalWatchFaceUtil.PATH_WITH_FEATURE)) { continue; } DataMapItem dataMapItem = DataMapItem.fromDataItem(dataItem); DataMap config = dataMapItem.getDataMap(); Log.d("WatchFace", "Config DataItem updated:" + config); updateUiForConfigDataMap(config); } }
public static boolean sendWearTreatmentsDataDelete(List<String> list) { if (googleApiClient != null && !googleApiClient.isConnected() && !googleApiClient.isConnecting()) { googleApiClient.connect(); } if (googleApiClient != null) { if (!list.isEmpty()) { Log.d(TAG, "sendWearTreatmentsDataDelete graph size=" + list.size()); DataMap entries = new DataMap(); entries.putLong("time", new Date().getTime()); // MOST IMPORTANT LINE FOR TIMESTAMP entries.putString("action", "delete"); entries.putStringArrayList("entries", (new ArrayList<String>(list))); new SendToDataLayerThread(WEARABLE_TREATMENTS_DATA_PATH, googleApiClient).executeOnExecutor(xdrip.executor, entries); } else Log.d(TAG, "sendWearTreatmentsDataDelete treatments count = 0"); } else { Log.e(TAG, "sendWearTreatmentsData No connection to wearable available for send treatment!"); return false; } return true; }
@Override // DataApi.DataListener public void onDataChanged(DataEventBuffer dataEvents) { Log.d(TAG, "Data changed"); for (DataEvent dataEvent : dataEvents) { if (dataEvent.getType() != DataEvent.TYPE_CHANGED) { continue; } DataItem dataItem = dataEvent.getDataItem(); if (!dataItem.getUri().getPath().equals( ConfigurationHelper.PATH_WITH_FEATURE)) { continue; } DataMapItem dataMapItem = DataMapItem.fromDataItem(dataItem); DataMap config = dataMapItem.getDataMap(); Log.d(TAG, "Config DataItem updated:" + config); // This can happen from this method more often when phone changes updateUiForConfigDataMap(config); } }
public void Approve(View myview) { if (watchkeypad) { //Treatments.create(carbs, insulin, thisnotes, new Date().getTime()); DataMap dataMap = new DataMap(); dataMap.putDouble("timeoffset", timeoffset); dataMap.putDouble("carbs", carbs); dataMap.putDouble("insulin", insulin); dataMap.putDouble("bloodtest", bloodtest); dataMap.putString("notes", thisnotes); //dataMap.putLong("timestamp", System.currentTimeMillis()); ListenerService.createTreatment(dataMap, this); } else SendData(this, WEARABLE_APPROVE_TREATMENT, null); finish(); }
@Override // DataApi.DataListener public void onDataChanged(DataEventBuffer dataEvents) { for (DataEvent dataEvent : dataEvents) { if (dataEvent.getType() != DataEvent.TYPE_CHANGED) { continue; } DataItem dataItem = dataEvent.getDataItem(); if (!dataItem.getUri().getPath().equals( WatchFaceUtil.PATH_WITH_FEATURE)) { continue; } DataMapItem dataMapItem = DataMapItem.fromDataItem(dataItem); DataMap config = dataMapItem.getDataMap(); Log.d(TAG, "Config DataItem updated:" + config); updateUiForConfigDataMap(config); } }
private void syncFieldData(DataMap dataMap) { String dex_txid = dataMap.getString("dex_txid", ""); byte[] G5_BATTERY_MARKER = dataMap.getByteArray(G5CollectionService.G5_BATTERY_MARKER); byte[] G5_FIRMWARE_MARKER = dataMap.getByteArray(G5CollectionService.G5_FIRMWARE_MARKER); if (dex_txid != null && dex_txid.equals(mPrefs.getString("dex_txid", "default"))) { if (G5_BATTERY_MARKER != null) { long watch_last_battery_query = dataMap.getLong(G5CollectionService.G5_BATTERY_FROM_MARKER); long phone_last_battery_query = PersistentStore.getLong(G5CollectionService.G5_BATTERY_FROM_MARKER + dex_txid); if (watch_last_battery_query > phone_last_battery_query) { G5CollectionService.setStoredBatteryBytes(dex_txid, G5_BATTERY_MARKER); PersistentStore.setLong(G5CollectionService.G5_BATTERY_FROM_MARKER + dex_txid, watch_last_battery_query); G5CollectionService.getBatteryStatusNow = false; Ob1G5CollectionService.getBatteryStatusNow = false; } } if (G5_FIRMWARE_MARKER != null) { G5CollectionService.setStoredFirmwareBytes(dex_txid, G5_FIRMWARE_MARKER); } } }
@Override public void onDataChanged(DataEventBuffer dataEventBuffer) { Log.i("WATCH", "onDataChanged"); for (DataEvent event : dataEventBuffer) { if (event.getType() == DataEvent.TYPE_CHANGED) { // DataItem changed DataItem item = event.getDataItem(); if (item.getUri().getPath().compareTo(DATA_PATH) == 0) { DataMap dataMap = DataMapItem.fromDataItem(item).getDataMap(); extractWeatherData(dataMap); } } else if (event.getType() == DataEvent.TYPE_DELETED) { // DataItem deleted } } }
@Override public void onDataChanged(DataEventBuffer dataEventBuffer) { Log.d(LOG_TAG, "Weather data has been changed!"); for (DataEvent event : dataEventBuffer) { DataItem item = event.getDataItem(); if (WEATHER_DATA_PATH.equals(item.getUri().getPath())) { DataMap dataMap = DataMapItem.fromDataItem(item).getDataMap(); double high = dataMap.getDouble(WEATHER_DATA_HIGH); double low = dataMap.getDouble(WEATHER_DATA_LOW); long id = dataMap.getLong(WEATHER_DATA_ID); mWeather = (int) Math.round(high) + "/" + (int) Math.round(low); mWeatherId = (int) id; loadIconForWeatherId(); SharedPreferences preferences = getSharedPreferences(PREFERENCES, MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putString(KEY_WEATHER, mWeather); editor.putInt(KEY_WEATHER_ID, mWeatherId); editor.apply(); } } }
/** * Overwrites (or sets, if not present) the keys in the current config {@link DataItem} with * the ones appearing in the given {@link DataMap}. If the config DataItem doesn't exist, * it's created. * <p> * It is allowed that only some of the keys used in the config DataItem appear in * {@code configKeysToOverwrite}. The rest of the keys remains unmodified in this case. */ public static void overwriteKeysInConfigDataMap(final GoogleApiClient googleApiClient, final DataMap configKeysToOverwrite) { WatchFaceUtil.fetchConfigDataMap(googleApiClient, new FetchConfigDataMapCallback() { @Override public void onConfigDataMapFetched(DataMap currentConfig) { DataMap overwrittenConfig = new DataMap(); overwrittenConfig.putAll(currentConfig); overwrittenConfig.putAll(configKeysToOverwrite); WatchFaceUtil.putConfigDataItem(googleApiClient, overwrittenConfig); } } ); }
/** * Overwrites the current config {@link DataItem}'s {@link DataMap} with {@code newConfig}. * If the config DataItem doesn't exist, it's created. */ public static void putConfigDataItem(GoogleApiClient googleApiClient, DataMap newConfig) { PutDataMapRequest putDataMapRequest = PutDataMapRequest.create(PATH_WITH_FEATURE); DataMap configToPut = putDataMapRequest.getDataMap(); configToPut.putAll(newConfig); Wearable.DataApi.putDataItem(googleApiClient, putDataMapRequest.asPutDataRequest()) .setResultCallback(new ResultCallback<DataApi.DataItemResult>() { @Override public void onResult(DataApi.DataItemResult dataItemResult) { if (Log.isLoggable(TAG, Log.DEBUG)) { Log.d(TAG, "putDataItem result status: " + dataItemResult.getStatus()); } } }); }
private void resendData() { Log.d(TAG, "resendData ENTER"); forceGoogleApiConnect(); Log.d(TAG, "resendData googleApiClient connected ENTER"); long startTime = new Date().getTime() - (60000 * 60 * 24); BgReading last_bg = BgReading.last(); if (last_bg != null) { List<BgReading> graph_bgs = BgReading.latestForGraph(60, startTime); BgGraphBuilder bgGraphBuilder = new BgGraphBuilder(getApplicationContext()); if (!graph_bgs.isEmpty()) { final int battery = PowerStateReceiver.getBatteryLevel(getApplicationContext()); DataMap entries = dataMap(last_bg, mPrefs, bgGraphBuilder, battery); final ArrayList<DataMap> dataMaps = new ArrayList<>(graph_bgs.size()); for (BgReading bg : graph_bgs) { dataMaps.add(dataMap(bg, mPrefs, bgGraphBuilder, battery)); } entries.putLong("time", new Date().getTime()); // MOST IMPORTANT LINE FOR TIMESTAMP entries.putDataMapArrayList("entries", dataMaps); if (mPrefs.getBoolean("extra_status_line", false)) { entries.putString("extra_status_line", Home.extraStatusLine()); } new SendToDataLayerThread(WEARABLE_DATA_PATH, googleApiClient).executeOnExecutor(xdrip.executor, entries); } } }
public void addDataMap(DataMap dataMap) {//KS double sgv = dataMap.getDouble("sgvDouble"); double high = dataMap.getDouble("high"); double low = dataMap.getDouble("low"); double timestamp = dataMap.getDouble("timestamp"); //Log.d(TAG, "addToWatchSet entry=" + dataMap); final int size = bgDataList.size(); BgWatchData bgdata = new BgWatchData(sgv, high, low, timestamp); if (size > 0) { if (bgDataList.contains(bgdata)) { int i = bgDataList.indexOf(bgdata); BgWatchData bgd = bgDataList.get(bgDataList.indexOf(bgdata)); //Log.d(TAG, "addToWatchSet replace indexOf=" + i + " bgDataList.sgv=" + bgd.sgv + " bgDataList.timestamp" + bgd.timestamp); bgDataList.set(i, bgdata); } else { //Log.d(TAG, "addToWatchSet add " + " entry.sgv=" + bgdata.sgv + " entry.timestamp" + bgdata.timestamp); bgDataList.add(bgdata); } } else { bgDataList.add(bgdata); } }
public void addToWatchSet(DataMap dataMap) { if (d) Log.d(TAG, "addToWatchSet bgDataList.size()=" + bgDataList.size()); ArrayList<DataMap> entries = dataMap.getDataMapArrayList("entries"); if (entries != null) { if (d) Log.d(TAG, "addToWatchSet entries.size()=" + entries.size()); for (DataMap entry : entries) { addDataMap(entry); } } else { addDataMap(dataMap); } for (int i = 0; i < bgDataList.size(); i++) { if (bgDataList.get(i).timestamp < (new Date().getTime() - (1000 * 60 * 60 * 5))) { bgDataList.remove(i); //Get rid of anything more than 5 hours old break; } } }
@Override public void onDataChanged(DataEventBuffer dataEvents) {//KS does not seem to get triggered; therefore use OnMessageReceived instead DataMap dataMap; for (DataEvent event : dataEvents) { if (event.getType() == DataEvent.TYPE_CHANGED) { String path = event.getDataItem().getUri().getPath(); switch (path) { case WEARABLE_PREF_DATA_PATH: dataMap = DataMapItem.fromDataItem(event.getDataItem()).getDataMap(); if (dataMap != null) { Log.d(TAG, "onDataChanged WEARABLE_PREF_DATA_PATH dataMap=" + dataMap); syncPrefData(dataMap); } break; default: Log.d(TAG, "Unknown wearable path: " + path); break; } } } }
public synchronized static void createTreatment(DataMap dataMap, Context context) { Log.d(TAG, "createTreatment dataMap=" + dataMap); double timeoffset = dataMap.getDouble("timeoffset", 0); double carbs = dataMap.getDouble("carbs", 0); double insulin = dataMap.getDouble("insulin", 0); double bloodtest = dataMap.getDouble("bloodtest", 0); String notes = dataMap.getString("notes", ""); long timestamp_ms = Treatments.getTimeStampWithOffset(timeoffset); Treatments treatment = Treatments.create(carbs, insulin, notes, timestamp_ms); if (bloodtest > 0) { Log.d(TAG, "createTreatment bloodtest=" + bloodtest); BloodTest.createFromCal(bloodtest, timeoffset, "Manual Entry", treatment.uuid); } else Log.d(TAG, "createTreatment bloodtest=0 " + bloodtest); showTreatments(context, "all"); SendData(context, SYNC_TREATMENTS_PATH, null); //requestData(context);//send to phone if connected }
public static DataMap getBloodTests(long startTime) { BloodTest last = BloodTest.last(); if (last != null) { Log.d(TAG, "getBloodTests last.timestamp:" + JoH.dateTimeText(last.timestamp)); } List<BloodTest> graph = BloodTest.latestForGraph(60, startTime); if (!graph.isEmpty()) { Log.d(TAG, "getBloodTests graph size=" + graph.size()); final ArrayList<DataMap> dataMaps = new ArrayList<>(graph.size()); DataMap entries = dataMapForWatchface(graph.get(0)); for (BloodTest data : graph) { dataMaps.add(dataMapForWatchface(data)); } entries.putDataMapArrayList("entries", dataMaps); Log.d(TAG, "getBloodTests entries=" + entries); return entries; } else { Log.d(TAG, "getBloodTests no entries for startTime=" + JoH.dateTimeText(startTime)); return null; } }
private void loadBasalsAndTemps(DataMap dataMap) { ArrayList<DataMap> temps = dataMap.getDataMapArrayList("temps"); if (temps != null) { tempWatchDataList = new ArrayList<>(); for (DataMap temp : temps) { TempWatchData twd = new TempWatchData(); twd.startTime = temp.getLong("starttime"); twd.startBasal = temp.getDouble("startBasal"); twd.endTime = temp.getLong("endtime"); twd.endBasal = temp.getDouble("endbasal"); twd.amount = temp.getDouble("amount"); tempWatchDataList.add(twd); } } ArrayList<DataMap> basals = dataMap.getDataMapArrayList("basals"); if (basals != null) { basalWatchDataList = new ArrayList<>(); for (DataMap basal : basals) { BasalWatchData bwd = new BasalWatchData(); bwd.startTime = basal.getLong("starttime"); bwd.endTime = basal.getLong("endtime"); bwd.amount = basal.getDouble("amount"); basalWatchDataList.add(bwd); } } }
@Override public void onDataChanged(DataEventBuffer dataEventBuffer) { Log.d("test", "onDataChanged is called !!!"); for (DataEvent event : dataEventBuffer) { DataItem item = event.getDataItem(); if (item.getUri().getPath().compareTo("/weather") == 0) { DataMap dataMap = DataMapItem.fromDataItem(item).getDataMap(); if (dataMap.getInt("highTemp") != 0) { int highTemp_notformatted = dataMap.getInt("highTemp"); highTemp = "" + highTemp_notformatted + "°"; Log.d("Test", "hight Temp: " + highTemp); } if (dataMap.getInt("lowTemp") != 0) { int lowTemp_notformatted = dataMap.getInt("lowTemp"); lowTemp = "" + lowTemp_notformatted + "°"; Log.d("Test", "low Temp: " + lowTemp); } if (dataMap.getInt("weatherId") != 0) { weatherId = dataMap.getInt("weatherId"); Log.d("Test", "weatherId: " + weatherId); } invalidate(); } else { Log.d("test", "Can not parse data sent from mobile"); } } }