Java 类com.google.android.gms.wearable.DataApi 实例源码

项目:Android-DFU-App    文件:UARTConfigurationSynchronizer.java   
/**
 * 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);
}
项目:adrenaline_watch_face    文件:WatchFaceUtil.java   
/**
 * 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);
    PutDataRequest putDataRequest = putDataMapRequest.asPutDataRequest();
    putDataRequest.setUrgent();
    Wearable.DataApi.putDataItem(googleApiClient, putDataRequest)
            .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());
                    }
                }
            });
}
项目:GmsWear    文件:GmsWear.java   
/**
 * Extracts byte array data from an
 * {@link com.google.android.gms.wearable.Asset}, in a blocking way, hence should not be called
 * on the UI thread. This may return {@code null}.
 */
public byte[] loadAssetSynchronous(Asset asset) throws IOException {
    assertApiConnectivity();
    WearUtil.assertNonUiThread();
    if (asset == null) {
        throw new IllegalArgumentException("Asset must be non-null");
    }

    InputStream assetInputStream = Wearable.DataApi.getFdForAsset(
            mGoogleApiClient, asset).await().getInputStream();

    if (assetInputStream == null) {
        Log.w(TAG, "Requested an unknown Asset.");
        return null;
    }

    ByteArrayOutputStream output = new ByteArrayOutputStream();

    int n = 0;
    byte[] buffer = new byte[4096];
    while (-1 != (n = assetInputStream.read(buffer))) {
        output.write(buffer, 0, n);
    }

    return output.toByteArray();
}
项目:ubiquitous    文件:SunshineSyncIntentService.java   
private void updateWearWeather(int weather_id, double high_temp, double low_temp){
    PutDataMapRequest putDataMapRequest = PutDataMapRequest.create(WEATHER_PATH).setUrgent();
    putDataMapRequest.getDataMap().putInt(WEATHER_ID, weather_id);
    Log.d(LOG_TAG, "value of weather put : "+weather_id);
    putDataMapRequest.getDataMap().putDouble(HIGH_TEMP, high_temp);
    putDataMapRequest.getDataMap().putDouble(LOW_TEMP, low_temp);
    PutDataRequest putDataRequest = putDataMapRequest.asPutDataRequest().setUrgent();
    PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi.putDataItem(mWearClient, putDataRequest);

    pendingResult.setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
        @Override
        public void onResult(@NonNull DataApi.DataItemResult dataItemResult) {
            if (dataItemResult.getStatus().isSuccess()) {
                Log.d(LOG_TAG, "Data item set: " + dataItemResult.getDataItem().getUri());

            } else {
                Log.d(LOG_TAG, "Error in sending data to watch");
            }
        }

    });
}
项目:Android-DFU-App    文件:UARTConfigurationsActivity.java   
/**
 * 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();
            }
        });
    }
}
项目:Advanced_Android_Development_Wear    文件:DigitalWatchFaceUtil.java   
public static void fetchConfigDataMap(final GoogleApiClient client,
        final FetchConfigDataMapCallback callback, final String path) {

    Wearable.NodeApi.getLocalNode(client).setResultCallback(
            new ResultCallback<NodeApi.GetLocalNodeResult>() {
                @Override
                public void onResult(NodeApi.GetLocalNodeResult getLocalNodeResult) {
                    String localNode = getLocalNodeResult.getNode().getId();
                    Uri uri = new Uri.Builder()
                            .scheme("wear")
                            .path(path)
                            .authority(localNode)
                            .build();
                    Wearable.DataApi.getDataItem(client, uri)
                            .setResultCallback(new DataItemResultCallback(callback));
                }
            }
    );
}
项目:Advanced_Android_Development_Wear    文件:DigitalWatchFaceUtil.java   
public static void putConfigDataItem(GoogleApiClient googleApiClient, DataMap newConfig, String path) {
    PutDataMapRequest putDataMapRequest = PutDataMapRequest.create(path);
    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());
                    }
                }
            });
}
项目:DronesWear    文件:MainActivity.java   
@Override
public void onConnected(Bundle bundle) {
    Wearable.DataApi.addListener(mGoogleApiClient, this);

    // get existing data
    PendingResult<DataItemBuffer> results = Wearable.DataApi.getDataItems(mGoogleApiClient);
    results.setResultCallback(new ResultCallback<DataItemBuffer>() {
        @Override
        public void onResult(@NonNull DataItemBuffer dataItems) {
            for (DataItem dataItem : dataItems) {
                switch (Message.getMessageType(dataItem)) {
                    case ACTION_TYPE:
                        int productAction = Message.decodeActionTypeMessage(dataItem);
                        onActionTypeChanged(productAction);
                        break;
                    case INTERACTION_TYPE:
                        int interactionType = Message.decodeInteractionTypeMessage(dataItem);
                        onInteractionTypeChanged(interactionType);
                        break;
                }
            }
            dataItems.release();
        }
    });
}
项目:SunshineWithWear    文件:MyDigitalWatchFace.java   
private Bitmap loadBitmapFromAsset(GoogleApiClient apiClient, Asset asset) {
                if (asset == null) {
                    throw new IllegalArgumentException("Asset must be non-null");
                }

            /*InputStream assetInputStream = Wearable.DataApi.getFdForAsset(
                    apiClient, asset).await().getInputStream();
*/
                final InputStream[] assetInputStream = new InputStream[1];

                Wearable.DataApi.getFdForAsset(apiClient, asset).setResultCallback(new ResultCallback<DataApi.GetFdForAssetResult>() {
                    @Override
                    public void onResult(DataApi.GetFdForAssetResult getFdForAssetResult) {
                        assetInputStream[0] = getFdForAssetResult.getInputStream();
                    }
                });


                if (assetInputStream[0] == null) {
                    Log.w(TAG, "Requested an unknown Asset.");
                    return null;
                }
                return BitmapFactory.decodeStream(assetInputStream[0]);
            }
项目:Athletica    文件:ConfigurationHelper.java   
/**
 * Asynchronously fetches the current config {@link DataMap} for {@link com.dimitrioskanellopoulos.athletica.WatchFaceService}
 * and passes it to the given callback.
 * <p/>
 * If the current config {@link DataItem} doesn't exist, it isn't created and the callback
 * receives an empty DataMap.
 */
public static void fetchConfigDataMap(final GoogleApiClient client,
                                      final FetchConfigDataMapCallback callback) {
    Wearable.NodeApi.getLocalNode(client).setResultCallback(
            new ResultCallback<NodeApi.GetLocalNodeResult>() {
                @Override
                public void onResult(@NonNull NodeApi.GetLocalNodeResult getLocalNodeResult) {
                    String localNode = getLocalNodeResult.getNode().getId();
                    Uri uri = new Uri.Builder()
                            .scheme("wear")
                            .path(ConfigurationHelper.PATH_WITH_FEATURE)
                            .authority(localNode)
                            .build();
                    Wearable.DataApi.getDataItem(client, uri)
                            .setResultCallback(new DataItemResultCallback(callback));
                }
            }
    );
}
项目:Sunshine-Android-Wear    文件:DigitalWatchFace.java   
/**
 * Load bit map from asset provided
 * @param asset
 */
public void loadBitmapFromAsset(Asset asset) {
    if (asset == null) {
        Log.e("WATCH", "Asset received on watch face is null");
        return;
    }
    // convert asset into a file descriptor and get notified when it's ready
    Wearable.DataApi.getFdForAsset(
            mGoogleApiClient, asset).setResultCallback(new ResultCallback<DataApi.GetFdForAssetResult>() {
        @Override
        public void onResult(DataApi.GetFdForAssetResult getFdForAssetResult) {
            InputStream assetInputStream = getFdForAssetResult.getInputStream();
            if (assetInputStream == null) {
                Log.w("WATCH", "Requested an unknown Asset.");
                return;
            }
            mWeatherIconBitmap = BitmapFactory.decodeStream(assetInputStream);
        }
    });
}
项目:ubiquitous    文件:SunshineSyncIntentService.java   
private void updateWearWeather(int weather_id, double high_temp, double low_temp){
    PutDataMapRequest putDataMapRequest = PutDataMapRequest.create(WEATHER_PATH).setUrgent();
    putDataMapRequest.getDataMap().putInt(WEATHER_ID, weather_id);
    Log.d(LOG_TAG, "value of weather put : "+weather_id);
    putDataMapRequest.getDataMap().putDouble(HIGH_TEMP, high_temp);
    putDataMapRequest.getDataMap().putDouble(LOW_TEMP, low_temp);
    PutDataRequest putDataRequest = putDataMapRequest.asPutDataRequest().setUrgent();
    PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi.putDataItem(mWearClient, putDataRequest);

    pendingResult.setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
        @Override
        public void onResult(@NonNull DataApi.DataItemResult dataItemResult) {
            if (dataItemResult.getStatus().isSuccess()) {
                Log.d(LOG_TAG, "Data item set: " + dataItemResult.getDataItem().getUri());

            } else {
                Log.d(LOG_TAG, "Error in sending data to watch");
            }
        }

    });
}
项目:GmsWear    文件:GmsWear.java   
/**
 * Deletes a data items asynchronously. Caller can specify a {@link ResultCallback} or
 * pass a {@code null}; if a {@code null} is passed, a default {@link ResultCallback} will be
 * used that would call {@link DataConsumer#onDeleteDataItemsResult(int)}.
 */
public void deleteDataItems(final Uri dataItemUri,
        @Nullable final ResultCallback<? super DataApi.DeleteDataItemsResult> callback) {
    assertApiConnectivity();
    Wearable.DataApi.deleteDataItems(mGoogleApiClient, dataItemUri).setResultCallback(
            new ResultCallback<DataApi.DeleteDataItemsResult>() {
                @Override
                public void onResult(DataApi.DeleteDataItemsResult deleteDataItemsResult) {
                    int statusCode = deleteDataItemsResult.getStatus().getStatusCode();
                    if (!deleteDataItemsResult.getStatus().isSuccess()) {
                        Log.e(TAG, String.format(
                                "Failed to delete data items (status code=%d): %s",
                                statusCode, dataItemUri));
                    }
                    if (callback == null) {
                        for (DataConsumer consumer : mDataConsumers) {
                            consumer.onDeleteDataItemsResult(statusCode);
                        }
                    } else {
                        callback.onResult(deleteDataItemsResult);
                    }
                }
            });
}
项目:android-samples    文件:WatchFaceConfigActivity.java   
private void notifyWear(String newBgColor) {
    PutDataMapRequest dataMapRequest = PutDataMapRequest.create("/bg_change");

    dataMapRequest.getDataMap().putString("new_color", newBgColor);

    PutDataRequest putDataRequest = dataMapRequest.asPutDataRequest();
    Wearable.DataApi.putDataItem(mGoogleApiClient, putDataRequest)
            .setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
                @Override
                public void onResult(@NonNull DataApi.DataItemResult dataItemResult) {
                    //check if the message is delivered?
                    //If the status is failed, that means that the currently device is
                    //not connected. The data will get deliver when phone gets connected to the watch.
                    Log.d("Data saving", dataItemResult.getStatus().isSuccess() ? "Success" : "Failed");
                }
            });
}
项目:SunshineApp    文件:WatchUpdaterReceiver.java   
@Override
public void onConnected(@Nullable Bundle bundle) {
    Log.d("WatchUpdaterReceiver", "onConnected: " + bundle);
    new Thread(new Runnable() {
        @Override
        public void run() {
            if(config!=null && config.size()>0) {
                    PutDataMapRequest putDMR = PutDataMapRequest.create(PATH_WITH_FEATURE);
                    putDMR.getDataMap().putAll(config);
                    PutDataRequest request = putDMR.asPutDataRequest().setUrgent();
                    DataApi.DataItemResult result = Wearable.DataApi.putDataItem(mGoogleApiClient, request).await();
                    if (result.getStatus().isSuccess()) {
                        Log.v("WatchUpdaterReceiver", "DataMap: " + config + " sent successfully to data layer ");
                    }
                    else {
                        // Log an error
                        Log.v("WatchUpdaterReceiver", "ERROR: failed to send DataMap to data layer");
                    }
            }
        }
    }).start();
}
项目:adrenaline_watch_face    文件:WatchFaceUtil.java   
/**
 * Asynchronously fetches the current config {@link DataMap} for {@link SonicBoomFace}
 * and passes it to the given callback.
 * <p>
 * If the current config {@link DataItem} doesn't exist, it isn't created and the callback
 * receives an empty DataMap.
 */
public static void fetchConfigDataMap(final GoogleApiClient client,
                                      final FetchConfigDataMapCallback callback) {
    Wearable.NodeApi.getLocalNode(client).setResultCallback(
            new ResultCallback<NodeApi.GetLocalNodeResult>() {
                @Override
                public void onResult(NodeApi.GetLocalNodeResult getLocalNodeResult) {
                    String localNode = getLocalNodeResult.getNode().getId();
                    Uri uri = new Uri.Builder()
                            .scheme("wear")
                            .path(WatchFaceUtil.PATH_WITH_FEATURE)
                            .authority(localNode)
                            .build();
                    Wearable.DataApi.getDataItem(client, uri)
                            .setResultCallback(new DataItemResultCallback(callback));
                }
            }
    );
}
项目:adrenaline_watch_face    文件:WatchFaceUtil.java   
public static void fetchConfigDataMap(final GoogleApiClient client,
                                      final FetchConfigDataMapCallback callback) {
    Wearable.NodeApi.getLocalNode(client).setResultCallback(
            new ResultCallback<NodeApi.GetLocalNodeResult>() {
                @Override
                public void onResult(NodeApi.GetLocalNodeResult getLocalNodeResult) {
                    String localNode = getLocalNodeResult.getNode().getId();
                    Uri uri = new Uri.Builder()
                            .scheme("wear")
                            .path(WatchFaceUtil.PATH_WITH_FEATURE)
                            .authority(localNode)
                            .build();
                    Wearable.DataApi.getDataItem(client, uri)
                            .setResultCallback(new DataItemResultCallback(callback));
                }
            }
    );
}
项目:adrenaline_watch_face    文件:WatchFaceUtil.java   
/**
 * 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());
                    }
                }
            });
}
项目:DronesWear    文件:Message.java   
public static PendingResult<DataApi.DataItemResult> sendAcceleroMessage(AccelerometerData accelerometerData, GoogleApiClient googleApiClient) {
    PutDataMapRequest dataMapRequest = PutDataMapRequest.create(ACC_PATH);
    acceleroMessageUri = dataMapRequest.getUri();
    DataMap dataMap = dataMapRequest.getDataMap();
    //Data set
    dataMap.putFloatArray(VALUE_STR, new float[]{accelerometerData.getAccX(), accelerometerData.getAccY(), accelerometerData.getAccZ()});

    // Data Push
    PutDataRequest request = dataMapRequest.asPutDataRequest();
    PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi.putDataItem(googleApiClient, request);

    return pendingResult;
}
项目:GmsWear    文件:GmsWear.java   
private void syncData(PutDataMapRequest putDataMapRequest, boolean isUrgent) {
    assertApiConnectivity();
    if (isUrgent) {
        putDataMapRequest = putDataMapRequest.setUrgent();
    }
    PutDataRequest request = putDataMapRequest.asPutDataRequest();

    Wearable.DataApi.putDataItem(mGoogleApiClient, request)
            .setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
                @Override
                public void onResult(@NonNull DataApi.DataItemResult dataItemResult) {
                    if (dataItemResult.getStatus().isSuccess()) {
                        WearUtil.logD(TAG, "putDataItem success");
                    } else {
                        String errStr = dataItemResult.getStatus().getStatusMessage();
                        Log.e(TAG, "ERROR: failed to putDataItem, status code: "
                                + dataItemResult.getStatus().getStatusCode()
                                + ",status message:"
                                + errStr);

                    }
                }
            });
}
项目:prefsyncservice    文件:PrefSyncService.java   
@Override
public void handleMessage(Message msg) {
    Log.d("PrefSyncService", "handleMessage: " + msg.what);
    if (googleApiClient.isConnected()) {
        if (msg.what == ACTION_SYNC_ALL) {
            Wearable.DataApi.getDataItems(googleApiClient, DATA_SETTINGS_URI, DataApi.FILTER_PREFIX)
                    .setResultCallback(this);
        } else {
            processQueue();
        }
    } else {
        if (msg.what >= pendingAction) {
            pendingAction = msg.what;
        }
    }
}
项目:wearDrip    文件:FileSender.java   
private void sendData(Asset asset) {
    if (asset == null) {
        return;
    }
    PutDataMapRequest dataMap = PutDataMapRequest.create(WEAR_PATH);
    byte[] arr = asset.getData();
    dataMap.getDataMap().putByteArray(DATA_ASSET_FILE, arr);
    dataMap.getDataMap().putLong("timestamp", Calendar.getInstance().getTimeInMillis());
    PutDataRequest request = dataMap.asPutDataRequest();
    PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi.putDataItem(mGoogleAppiClient, request);
    pendingResult.setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
        @Override
        public void onResult(DataApi.DataItemResult dataItemResult) {
            Log.d(TAG, "onResult result:" + dataItemResult.getStatus());
        }
    });
}
项目:WearApp    文件:MessageListenerService.java   
private void sendData() {
    ArrayList<Double> tempValues = ForecastFragment.getTempValues();
    Log.v("TAG", tempValues.size()+"");
    final DataMap dataMap = new DataMap();
    dataMap.putDouble("max", tempValues.get(0));
    dataMap.putDouble("min", tempValues.get(1));
    dataMap.putInt("icon", ForecastFragment.getIconId());
    dataMap.putLong("timestamp", System.currentTimeMillis());

    new Thread( new Runnable() {
        @Override
        public void run() {
            PutDataMapRequest dataMapRequest = PutDataMapRequest.create(MOBILE_MESSAGE_PATH).setUrgent();
            dataMapRequest.getDataMap().putAll(dataMap);
            PutDataRequest request = dataMapRequest.asPutDataRequest();

            DataApi.DataItemResult result = Wearable.DataApi.putDataItem(mApiClient, request).await();
            if(result.getStatus().isSuccess()){
                Log.v("TAG", "Sent successfully");
            }else {
                Log.v("TAG", "Failed to send");
            }
        }
    }).start();
}
项目:Smartwatch    文件:DatalayerUtil.java   
/**
 * Method that puts String data into the Wearable.DataApi layer.
 *
 * @param context
 * @param key key value of the data
 * @param data the data as string
 * @param path the path to store
 * @return Obsservable that emits the result
 */
public static Observable<DataApi.DataItemResult> putData(Context context, final String key, final String data, final String path) {
    return getGoogleApiClient(context)
            .flatMap(new Func1<GoogleApiClient, Observable<DataApi.DataItemResult>>() {
                @Override
                public Observable<DataApi.DataItemResult> call(final GoogleApiClient googleApiClient) {
                    return Observable.create(new Observable.OnSubscribe<DataApi.DataItemResult>() {
                        @Override
                        public void call(final Subscriber<? super DataApi.DataItemResult> subscriber) {
                            PutDataMapRequest putDataMapReq = PutDataMapRequest.create(path);
                            putDataMapReq.getDataMap().putString(key, data);
                            PutDataRequest putDataReq = putDataMapReq.asPutDataRequest();
                            Wearable.DataApi.putDataItem(googleApiClient, putDataReq).setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
                                @Override
                                public void onResult(@NonNull DataApi.DataItemResult dataItemResult) {
                                    subscriber.onNext(dataItemResult);
                                    subscriber.onCompleted();
                                }
                            });
                        }
                    });
                }
            });
}
项目:Smartwatch    文件:DatalayerUtil.java   
/**
 * An Observable that emits whenever data changes in the wear datalayer
 *
 * @param context
 * @return Observable that emits DataEventBuffer
 */
public static Observable<DataEventBuffer> getDataEvents(Context context) {
    return getGoogleApiClient(context)
            .flatMap(new Func1<GoogleApiClient, Observable<DataEventBuffer>>() {
                @Override
                public Observable<DataEventBuffer> call(final GoogleApiClient googleApiClient) {
                    return Observable.create(new Observable.OnSubscribe<DataEventBuffer>() {
                        @Override
                        public void call(final Subscriber<? super DataEventBuffer> subscriber) {
                            Wearable.DataApi.addListener(googleApiClient, new DataApi.DataListener() {
                                @Override
                                public void onDataChanged(DataEventBuffer dataEventBuffer) {
                                    subscriber.onNext(dataEventBuffer);
                                }
                            });
                        }
                    });
                }
            });
}
项目:SunshineApp    文件:DigitalWatchFaceUtil.java   
/**
 * Asynchronously fetches the current config {@link DataMap} for { WatchFace}
 * and passes it to the given callback.
 * <p>
 * If the current config {@link DataItem} doesn't exist, it isn't created and the callback
 * receives an empty DataMap.
 */
public static void fetchConfigDataMap(final GoogleApiClient client,
        final FetchConfigDataMapCallback callback) {
    Wearable.NodeApi.getLocalNode(client).setResultCallback(
            new ResultCallback<NodeApi.GetLocalNodeResult>() {
                @Override
                public void onResult(NodeApi.GetLocalNodeResult getLocalNodeResult) {
                    String localNode = getLocalNodeResult.getNode().getId();
                    Uri uri = new Uri.Builder()
                            .scheme("wear")
                            .path(DigitalWatchFaceUtil.PATH_WITH_FEATURE)
                            .authority(localNode)
                            .build();
                    Wearable.DataApi.getDataItem(client, uri)
                            .setResultCallback(new DataItemResultCallback(callback));
                }
            }
    );
}
项目:Smartwatch    文件:WearDataHelper.java   
/**
 * This methods gets the string data from the wear DataApi and uses gson to deserialize json to a bundles object.
 *
 * @param googleApiClient a connected googleApiClient
 * @param nodeId          the node to get the data from
 * @return Observable that emits Bundles
 */
private static Observable<Bundles> getDataItem(final GoogleApiClient googleApiClient, final String nodeId) {
    return Observable.create(new Observable.OnSubscribe<Bundles>() {
        @Override
        public void call(final Subscriber<? super Bundles> subscriber) {
            final PendingResult<DataApi.DataItemResult> dataItem = Wearable.DataApi.getDataItem(googleApiClient, DatalayerUtil.getUriForDataItem(nodeId, DATA_PATH));
            dataItem.setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
                @Override
                public void onResult(@NonNull DataApi.DataItemResult dataItemResult) {
                    if (dataItemResult.getDataItem() == null) {
                        subscriber.onError(new Throwable("No data"));
                        return;
                    }
                    String string = DataMapItem.fromDataItem(dataItemResult.getDataItem()).getDataMap().getString(BUNDLE_KEY);
                    Bundles bundles = new Gson().fromJson(string, Bundles.class);
                    subscriber.onNext(bundles);
                    subscriber.onCompleted();
                }
            });
        }
    }).observeOn(Schedulers.io());
}
项目:DronesWear    文件:Message.java   
public static PendingResult<DataApi.DataItemResult> sendActionTypeMessage(int actionType, GoogleApiClient googleApiClient) {
    PutDataMapRequest dataMapRequest = PutDataMapRequest.create(ACTION_TYPE_PATH);
    DataMap dataMap = dataMapRequest.getDataMap();
    //Data set
    dataMap.putInt(VALUE_STR, actionType);

    // Data Push
    PutDataRequest request = dataMapRequest.asPutDataRequest();
    PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi.putDataItem(googleApiClient, request);

    return pendingResult;
}
项目:GmsWear    文件:GmsWear.java   
/**
 * Retrieves a single data item with the given {@code dataItemUri} asynchronously. Caller can
 * specify a {@link ResultCallback} or pass a {@code null}; if a {@code null} is passed, a
 * default {@link ResultCallback} will be used that will call
 * {@link DataConsumer#onGetDataItem(int, DataApi.DataItemResult)}.
 *
 * @see DataConsumer#onGetDataItem(int, DataApi.DataItemResult)
 */
public void getDataItem(Uri dataItemUri,
        @Nullable final ResultCallback<? super DataApi.DataItemResult> callback) {
    assertApiConnectivity();
    Wearable.DataApi.getDataItem(mGoogleApiClient, dataItemUri).setResultCallback(
            new ResultCallback<DataApi.DataItemResult>() {
                @Override
                public void onResult(DataApi.DataItemResult dataItemResult) {
                    int statusCode = dataItemResult.getStatus().getStatusCode();
                    if (!dataItemResult.getStatus().isSuccess()) {
                        Log.e(TAG, "Failed to get the data item, status code: " + statusCode);
                    }
                    if (callback == null) {
                        for (DataConsumer consumer : mDataConsumers) {
                            consumer.onGetDataItem(statusCode, dataItemResult);
                        }
                    } else {
                        callback.onResult(dataItemResult);
                    }
                }
            });
}
项目:UdacityProject6    文件:SunshineWatchFace.java   
@Override
public void onVisibilityChanged(boolean visible) {
    super.onVisibilityChanged(visible);

    if (visible) {
        if (mGoogleApiClient != null) {
            mGoogleApiClient.connect();
        }
        registerReceiver();

        // Update time zone in case it changed while we weren't visible.
        mCalendar.setTimeZone(TimeZone.getDefault());
        mCalendar.setTime(new Date());
        initFormats();
    } else {
        unregisterReceiver();
        if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
            Wearable.DataApi.removeListener(mGoogleApiClient, this);
            mGoogleApiClient.disconnect();
        }
    }

    // Whether the timer should be running depends on whether we're visible (as well as
    // whether we're in ambient mode), so we may need to start or stop the timer.
    updateTimer();
}
项目:DronesWear    文件:MainActivity.java   
private void onButtonClicked()
{
    PendingResult<DataApi.DataItemResult> pendingResult = Message.sendActionMessage(mGoogleApiClient);
    pendingResult.setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
        @Override
        public void onResult(@NonNull DataApi.DataItemResult dataItemResult) {
            Message.emptyActionMessage(mGoogleApiClient);
        }
    });

    Intent intent = new Intent(this, ConfirmationActivity.class);
    intent.putExtra(ConfirmationActivity.EXTRA_ANIMATION_TYPE,
            ConfirmationActivity.SUCCESS_ANIMATION);
    intent.putExtra(ConfirmationActivity.EXTRA_MESSAGE,
            getString(R.string.action_sent));
    startActivity(intent);
}
项目:UdacityProject6    文件:SunshineWatchFace.java   
private void getWeatherInfo() {
    PutDataMapRequest putDataMapRequest = PutDataMapRequest.create(KEY_PATH);
    String id = UUID.randomUUID().toString();
    putDataMapRequest.getDataMap().putString(KEY_UUID, id);

    Log.d(LOG_TAG,"getWeatherInfo id=" +id);
    PutDataRequest request = putDataMapRequest.asPutDataRequest();

    Wearable.DataApi.putDataItem(mGoogleApiClient, request)
            .setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
                @Override
                public void onResult(DataApi.DataItemResult dataItemResult) {
                    if (!dataItemResult.getStatus().isSuccess()) {
                        Log.d("WatchFaceService", "Data call failed");
                    }
                }
            });
}
项目:locus-addon-wearables    文件:LocusWearCommService.java   
/**
 * Sends payload, should be only called from this class and its subclasses
 *
 * @param path
 * @param data
 */
protected void sendDataItemWithoutConnectionCheck(DataPath path, TimeStampStorable data) {
    Logger.logD(getClass().getSimpleName(), "Sending " + path);
    PutDataRequest request = PutDataRequest.create(path.getPath());
    final byte[] dataToSend = data.getAsBytes();
    // check data size whether to send as and asset or plain data item
    if (dataToSend.length >= MAX_DATA_ITEM_SIZE_B) {
        request.putAsset(DataPath.DEFAULT_ASSET_KEY, Asset.createFromBytes(dataToSend));
    } else {
        request.setData(dataToSend);
    }
    if (path.isUrgent()) {
        request.setUrgent();
    }
    PendingResult<DataApi.DataItemResult> pendingResult =
            Wearable.DataApi.putDataItem(mGoogleApiClient, request);
}
项目:Sunshinewear    文件:WatchFace.java   
@Override
protected Bitmap doInBackground(Asset... params) {

    if (params.length > 0) {

        Asset asset = params[0];

        InputStream assetInputStream = Wearable.DataApi.getFdForAsset(
                mGoogleApiClient, asset).await().getInputStream();

        if (assetInputStream == null) {
            Log.w(TAG, "Requested an unknown Asset.");
            return null;
        }
        return BitmapFactory.decodeStream(assetInputStream);

    } else {
        Log.e(TAG, "Asset must be non-null");
        return null;
    }
}
项目:Sunshinewear    文件:WatchFace.java   
@Override
public void onVisibilityChanged(boolean visible) {
    super.onVisibilityChanged(visible);

    if (visible) {
        mGoogleApiClient.connect();
        Log.d(TAG, "Google Api Client connected!");
        registerReceiver();

        // Update time zone in case it changed while we weren't visible.
        mTime.clear(TimeZone.getDefault().getID());
        mTime.setToNow();
    } else {

        if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
            Wearable.DataApi.removeListener(mGoogleApiClient, this);
            mGoogleApiClient.disconnect();
        }

        unregisterReceiver();
    }

    // Whether the timer should be running depends on whether we're visible (as well as
    // whether we're in ambient mode), so we may need to start or stop the timer.
    updateTimer();
}
项目:Sunshinewear    文件:SunshineSyncAdapter.java   
private void sendTodayForecast(double maxTemp, double minTemp, int weatherId) {

        PutDataMapRequest dataMap = PutDataMapRequest.create(FORECAST_PATH).setUrgent();
        String lowString = Utility.formatTemperature(getContext(), minTemp);
        String highString = Utility.formatTemperature(getContext(), maxTemp);
        dataMap.getDataMap().putString(MAX_TEMP_KEY, highString);
        dataMap.getDataMap().putString(MIN_TEMP_KEY, lowString);

        int artResource = Utility.getArtResourceForWeatherCondition(weatherId);
        Asset weatherIcon = Utility.toAsset(artResource, getContext());
        dataMap.getDataMap().putAsset(WEATHER_ICON_KEY, weatherIcon);
        dataMap.getDataMap().putLong(TIMESTAMP_KEY, System.currentTimeMillis());
        PutDataRequest request = dataMap.asPutDataRequest();

        Wearable.DataApi.putDataItem(mGoogleApiClient, request)
                .setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
                    @Override
                    public void onResult(DataApi.DataItemResult dataItemResult) {
                        if (!dataItemResult.getStatus().isSuccess()) {
                            Log.e(LOG_TAG, "ERROR: failed to putDataItem, status code: "
                                    + dataItemResult.getStatus().getStatusCode());
                        }
                    }
                });
    }
项目:AndroidAPS    文件:SendToDataLayerThread.java   
@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;
}
项目:LibreAlarm    文件:WearService.java   
@Override
public void onConnectionFailed(ConnectionResult result) {
    if (mResolvingError) {
        // Already attempting to resolve an error.
        return;
    } else if (result.hasResolution() && mActivity != null) {
        try {
            mResolvingError = true;
            result.startResolutionForResult(mActivity, 1000);
        } catch (IntentSender.SendIntentException e) {
            // There was an error with the resolution intent. Try again.
            mGoogleApiClient.connect();
        }
    } else {
        Log.e(TAG, "Connection to Google API client has failed");
        mResolvingError = false;
        if (mListener != null) mListener.onDataUpdated();
        Wearable.MessageApi.removeListener(mGoogleApiClient, this);
        Wearable.DataApi.removeListener(mGoogleApiClient, this);
    }
}
项目:DronesWear    文件:Message.java   
public static PendingResult<DataApi.DataItemResult> sendInteractionTypeMessage(int interactionBitfield, GoogleApiClient googleApiClient) {
    PutDataMapRequest dataMapRequest = PutDataMapRequest.create(INTERACTION_TYPE_PATH);
    DataMap dataMap = dataMapRequest.getDataMap();
    //Data set
    dataMap.putInt(VALUE_STR, interactionBitfield);

    // Data Push
    PutDataRequest request = dataMapRequest.asPutDataRequest();
    PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi.putDataItem(googleApiClient, request);

    return pendingResult;
}
项目:DronesWear    文件:MainActivity.java   
@Override
public void onConnected(Bundle bundle) {
    Wearable.DataApi.addListener(mGoogleApiClient, this);

    if (mDrone != null) {
        Message.sendActionTypeMessage(mDrone.getCurrentAction(), mGoogleApiClient);
    }
    sendInteractionType();

    // launch the app on the wear
    Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).setResultCallback(
            new ResultCallback<NodeApi.GetConnectedNodesResult>() {
        @Override
        public void onResult(@NonNull NodeApi.GetConnectedNodesResult getConnectedNodesResult) {
            for (Node node : getConnectedNodesResult.getNodes()) {
                Wearable.MessageApi.sendMessage(mGoogleApiClient, node.getId(),
                        Message.OPEN_ACTIVITY_MESSAGE, new byte[0]);
            }
        }
    });
}