当前位置: 首页 > 知识库问答 >
问题:

传输资产:错误代码4005 ASSET_UNAVAILABLE

奚高扬
2023-03-14

这快把我逼疯了。我很久以前写了一个代码,它是有效的,再次打开它,碰巧我不能将我的资产从移动设备转移到可穿戴设备。

public Bitmap loadBitmapFromAsset(Asset asset) {
    if (asset == null) {
        throw new IllegalArgumentException("Asset must be non-null");
    }
    // convert asset into a file descriptor and block until it's ready
    Log.d(TAG, "api client" + mApiClient);
    DataApi.GetFdForAssetResult result = Wearable.DataApi.getFdForAsset(mApiClient, asset).await();
    if (result == null) {
        Log.w(TAG, "getFdForAsset returned null");
        return null;
    }

    if (result.getStatus().isSuccess()) {
        Log.d(TAG, "success");
    } else {
        Log.d(TAG, result.getStatus().getStatusCode() + ":" + result.getStatus().getStatusMessage());
    }

    InputStream assetInputStream = result.getInputStream();

    if (assetInputStream == null) {
        Log.w(TAG, "Requested an unknown Asset.");
        return null;
    }
    // decode the stream into a bitmap
    return BitmapFactory.decodeStream(assetInputStream);
}

这是我调用loadBitmapFrom资产方法的代码。

DataMap dataMap = DataMapItem.fromDataItem(event.getDataItem()).getDataMap();

ArrayList<DataMap> dataMaps = dataMap.getDataMapArrayList("dataMaps");

ArrayList<String> names = new ArrayList<>();
ArrayList<String> permalinks = new ArrayList<>();
ArrayList<Asset> images = new ArrayList<>();

for (int i = 0 ; i < dataMaps.size() ; i++) {
   Log.d(TAG, dataMaps.get(i).getString("name"));
   names.add(dataMaps.get(i).getString("name"));
   permalinks.add(dataMaps.get(i).getString("permalink"));
   images.add(dataMaps.get(i).getAsset("image"));
}

editor.putInt("my_selection_size", names.size());
for (int i=0; i <names.size() ; i++) {
    editor.putString("my_selection_name_" + i, names.get(i));
    editor.putString("my_selection_permalink_" + i, permalinks.get(i));
    Log.d(TAG, "asset number " + i + " " + images.get(i));

    Bitmap bitmap = loadBitmapFromAsset(images.get(i));

    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
    byte[] byteArray = stream.toByteArray();

    String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
    editor.putString("my_selection_image_" + i, encoded);
}
private void sendData(PutDataMapRequest dataMap) {

    PutDataRequest request = dataMap.asPutDataRequest();
    request.setUrgent();

    com.google.android.gms.common.api.PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi.putDataItem(mApiClient, request);
    pendingResult.setResultCallback(new ResultCallback<DataApi.DataItemResult>() {
        @Override
        public void onResult(DataApi.DataItemResult dataItemResult) {
            com.orange.radio.horizon.tools.Log.d(TAG, "api client : " + mApiClient);
            if (dataItemResult.getStatus().isSuccess()) {
                com.orange.radio.horizon.tools.Log.d(TAG, "message successfully sent");
            } else if (dataItemResult.getStatus().isInterrupted()) {
                com.orange.radio.horizon.tools.Log.e(TAG, "couldn't send data to watch (interrupted)");
            } else if (dataItemResult.getStatus().isCanceled()) {
                com.orange.radio.horizon.tools.Log.e(TAG, "couldn't send data to watch (canceled)");
            }
        }
    });
    Log.d(TAG, "Sending data to android wear");
}


class ConfigTask extends AsyncTask<String, Void, String> {

    ArrayList<WatchData> mitems;
    int mType;

    public ConfigTask(ArrayList<WatchData> items, int type)
    {
        mitems = items;
        mType = type;
    }

    protected String doInBackground(String... str)
    {
        DataMap dataMap;
        ArrayList<DataMap> dataMaps = new ArrayList<>();
        Bitmap bitmap = null;
        for (int i = 0 ; i < mitems.size() ; i++) {
            dataMap = new DataMap();
            URL url = null;
            try {
                url = new URL(mitems.get(i).mUrlSmallLogo);
                Log.d(TAG, "url : " + url);
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            try {
                bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream());
            } catch (IOException e) {
                e.printStackTrace();
            }
            Asset asset = createAssetFromBitmap(bitmap);
            dataMap.putAsset("image", asset);
            dataMap.putString("name", mitems.get(i).mName);
            dataMap.putString("permalink", mitems.get(i).mPermalink);
            dataMaps.add(dataMap);
        }
        PutDataMapRequest request = null;
        switch (mType) {
            case 0 :
                request = PutDataMapRequest.create(SELECTION_PATH);
                break;
            case 1 :
                request = PutDataMapRequest.create(RADIOS_PATH);
                break;
            case 2 :
                request = PutDataMapRequest.create(PODCASTS_PATH);
                break;
        }
        request.getDataMap().putDataMapArrayList("dataMaps", dataMaps);
        request.getDataMap().putString("", "" + System.currentTimeMillis()); //random data to refresh

        Log.d(TAG, "last bitmap : " + bitmap);
        Log.d(TAG, "===============================SENDING THE DATAMAP ARRAYLIST==================================");
        sendData(request);

        return "h";
    }

    protected void onPostExecute(String name)
    {

    }
}
02-02 14:47:59.586    7585-7601/? D/WearMessageListenerService﹕ 4005:ASSET_UNAVAILABLE

共有1个答案

乜清野
2023-03-14

我最近也有同样的问题...我通过更新Google play服务解决了这个问题,并在应用程序和可穿戴模块中添加了相同的签名配置。如果它在第一个构建中不起作用,转到文件中的“无效缓存/重新启动”,它应该会起作用。

 类似资料:
  • PS E:\flatter\u proj\myapps\eb\u bill\u跟踪器 无声建筑零安全更多信息请参见https://dart.dev/null-safety/unsound-null-safety 失败:生成失败,出现异常。 > 错误:任务执行失败:应用程序:mergeReleaseResources。 E: \ flatter\u proj\myapps\eb\u bill\u t

  • 错误代码 宏定义 #define  RT_EOK   0   无错误   #define  RT_ERROR   1   一般错误   #define  RT_ETIMEOUT   2   超时错误   #define  RT_EFULL   3   资源已满   #define  RT_EEMPTY   4   资源已空   #define  RT_ENOMEM   5   内存不足   #de

  • 我有一个表格,可以很好地上传很多图像文件,大小也不一样。 但是有些图像没有上传到服务器。 问题图像具有空的$\u文件[name][tmp\u name]和$\u文件[name][error]==8 同时其他图像(文件大小较大或较小)正确上传。 你有什么想法吗? 谢谢

  • 在月食中, ”org.apache.axis2。AxisFault:传输错误: 403错误:禁止”试图从svn检出项目时发生错误。我不能实现这个错误,因此我检查了从终端使用"svn-co"命令的项目。 但是,有趣的是,当我试图在Eclipse中运行应用程序时,在输入凭据(用户名和密码)并按下“登录”按钮之后,我又遇到了相同的错误。响应是JFrame上的无效用户名/密码,但凭据没有错误。这只发生在日

  • 说明:编写一条if语句,验证字符串是否包含字符。 添加一个if语句,检查是否大于零。不要忘记if语句末尾的!如果字符串中确实有一些字符,则打印用户的单词。否则(即:语句),请打印空。您需要多次运行代码,测试空字符串和带字符的字符串。当你确信你的代码可以工作时,继续下一个练习。 我被卡住了,因为我一直遇到以下错误。我做错了什么?

  • 我的服务器上的Https不工作并得到。我尝试了太多的东西,但无法得到任何结果。我的带有Nginx反向代理的HttpSpring启动服务器工作得很好。 下面是我的 /etc/nginx/conf.d/*. conf文件: 我已经检查了我的443端口是否打开并正在监听。 我不知道我哪里做错了任何帮助都将感激不尽