/** * Builds an {@link com.google.android.gms.wearable.Asset} from a bitmap. The image that we get * back from the camera in "data" is a thumbnail size. Typically, your image should not exceed * 320x320 and if you want to have zoom and parallax effect in your app, limit the size of your * image to 640x400. Resize your image before transferring to your wearable device. */ private static Asset toAsset(Bitmap bitmap) { ByteArrayOutputStream byteStream = null; try { byteStream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteStream); return Asset.createFromBytes(byteStream.toByteArray()); } finally { if (null != byteStream) { try { byteStream.close(); } catch (IOException e) { // ignore } } } }
/** * Create an Asset using an existing Asset's digest. */ public static Asset createFromRef(String digest) { if (digest == null) { throw new IllegalArgumentException("Asset digest cannot be null"); } return new Asset(null, digest, null, null); }
@Override public String toString() { final StringBuilder sb = new StringBuilder(); sb.append("Asset[@") .append(Integer.toHexString(hashCode())) .append(", ") .append(digest != null ? digest : "nodigest"); if (this.data != null) sb.append(", size=").append(data.length); if (this.fd != null) sb.append(", fd=").append(fd); if (this.uri != null) sb.append(", uri=").append(uri); return sb.append("]").toString(); }
private void sendBlob(String path, final byte[] blob) { forceGoogleApiConnect(); if (googleApiClient.isConnected()) { final Asset asset = Asset.createFromBytes(blob); Log.d(TAG, "sendBlob asset size: " + asset.getData().length); final PutDataMapRequest request = PutDataMapRequest.create(path); request.getDataMap().putLong("time", new Date().getTime()); request.getDataMap().putByteArray("asset", blob); request.setUrgent(); final PendingResult result = Wearable.DataApi.putDataItem(googleApiClient, request.asPutDataRequest()); result.setResultCallback(new ResultCallback<DataApi.DataItemResult>() { @Override public void onResult(DataApi.DataItemResult sendMessageResult) { if (!sendMessageResult.getStatus().isSuccess()) { UserError.Log.e(TAG, "ERROR: failed to sendblob Status=" + sendMessageResult.getStatus().getStatusMessage()); } else { UserError.Log.i(TAG, "Sendblob Status=: " + sendMessageResult.getStatus().getStatusMessage()); } } }); Log.d(TAG, "sendBlob: Sending asset of size " + blob.length); } else { Log.e(TAG, "sendBlob: No connection to wearable available!"); } }
public static void sendApkToWatch(Context context, File apkFile, final ResultCallback callback) { Uri apkUri = FileProvider.getUriForFile(context, "com.calsignlabs.apde.fileprovider", apkFile); Asset asset = Asset.createFromUri(apkUri); PutDataMapRequest dataMap = PutDataMapRequest.create("/apk"); dataMap.getDataMap().putAsset("apk", asset); dataMap.getDataMap().putLong("timestamp", System.currentTimeMillis()); PutDataRequest request = dataMap.asPutDataRequest(); request.setUrgent(); Task<DataItem> putTask = Wearable.getDataClient(context).putDataItem(request); putTask.addOnCompleteListener(new OnCompleteListener<DataItem>() { @Override public void onComplete(@NonNull Task<DataItem> task) { if (task.isSuccessful()) { callback.success(); } else { callback.failure(); } } }); }
private void sendBlob(String path, final byte[] blob) { forceGoogleApiConnect(); if (googleApiClient.isConnected()) { final Asset asset = Asset.createFromBytes(blob); Log.d(TAG, "sendBlob asset size: " + asset.getData().length); final PutDataMapRequest request = PutDataMapRequest.create(path); request.getDataMap().putLong("time", new Date().getTime()); request.getDataMap().putByteArray("asset", blob); request.setUrgent(); final PendingResult result = Wearable.DataApi.putDataItem(googleApiClient, request.asPutDataRequest()); result.setResultCallback(new ResultCallback<DataApi.DataItemResult>() { @Override public void onResult(DataApi.DataItemResult sendMessageResult) { if (!sendMessageResult.getStatus().isSuccess()) { UserError.Log.e(TAG, "ERROR: failed to sendblob Status=" + sendMessageResult.getStatus().getStatusMessage()); } else { UserError.Log.i(TAG, "Sendblob Status=: " + sendMessageResult.getStatus().getStatusMessage()); } } }); Log.d(TAG, "sendBlob: Sending asset of size " + blob.length); } else { Log.e(TAG, "sendBlob: No connection to wearable available!"); } }
@Override protected PutDataMapRequest doInBackground(Void... voids) { PutDataMapRequest putDataMapRequest = PutDataMapRequest.create(Constantes.CAMINHO_DADOS); mUriDados = putDataMapRequest.getUri(); DataMap map = putDataMapRequest.getDataMap(); map.putInt(Constantes.EXTRA_POSICAO_ATUAL, position); map.putInt(Constantes.EXTRA_TOTAL_IMAGENS, Constantes.TOTAL_IMAGENS); Bitmap miniatura = ImagemUtil.imagem( mContext, "foto" + (position + 1) + ".jpg", 160, 160); if (miniatura != null) { final ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); miniatura.compress(Bitmap.CompressFormat.JPEG, 80, byteStream); Asset asset = Asset.createFromBytes(byteStream.toByteArray()); map.putAsset(Constantes.EXTRA_IMAGEM, asset); } return putDataMapRequest; } @Override
/** * Creates an Asset using a file descriptor. The FD should be closed after being successfully * sent in a putDataItem request. */ public static Asset createFromFd(ParcelFileDescriptor fd) { if (fd == null) { throw new IllegalArgumentException("Asset fd cannot be null"); } return new Asset(null, null, fd, null); }