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

为什么Wearable.dataapi.getFDforAsset生成状态为4005(资产不可用)的结果?

云建木
2023-03-14
    public void onDataChanged(DataEventBuffer dataEvents) {
    LOGD(TAG, "XXXX MainActivity.onDataChanged()");

    final List<DataEvent> events = FreezableUtils.freezeIterable(dataEvents);
    dataEvents.close();

    LOGD(TAG, "onDataChanged data event count=" + events.size());
    for (DataEvent event : events) {
        if (event.getType() == DataEvent.TYPE_CHANGED) {
            String path = event.getDataItem().getUri().getPath();
            if (IMAGE_PATH.equals(path)) {
                DataMapItem dataMapItem = DataMapItem.fromDataItem(event.getDataItem());
                LOGD(TAG, "onDataChanged getting image asset");
                Asset photo = dataMapItem.getDataMap()
                        .getAsset(IMAGE_KEY);
                LOGD(TAG, "onDataChanged photo asset="+photo);
                final String toi_name = dataMapItem.getDataMap().getString(GYBO_NAME);
                final String toi_info = dataMapItem.getDataMap().getString(GYBO_INFO);
                current_toi_name = toi_name;
                current_toi_info = toi_info;
                LOGD(TAG, "onDataChanged TOI name="+toi_name);
                LOGD(TAG, "onDataChanged TOI info="+toi_info);
                Bitmap bitmap = loadBitmapFromAsset(google_api_client, photo);
    private Bitmap loadBitmapFromAsset(GoogleApiClient apiClient, Asset asset) {
    if (asset == null) {
        throw new IllegalArgumentException("XXXX Asset must be non-null");
    }

    DataApi.GetFdForAssetResult result = Wearable.DataApi.getFdForAsset(
            apiClient, asset).await();
    if (result == null) {
        Log.w(TAG, "XXXX getFdForAsset returned null");
        return null;
    }

    if (result.getStatus().isSuccess()) {
        Log.d(TAG, "XXXX loadBitmapFromAsset getFdForAsset was successful");
    } else {
        Log.d(TAG, "XXXX loadBitmapFromAsset getFdForAsset was not successful. Error="+result.getStatus().getStatusCode()+":"+result.getStatus().getStatusMessage());
        // Seeing status code 4005 here which means Asset Unavailable
    }

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

共有1个答案

东郭承业
2023-03-14
    private static Asset createAssetFromBitmap(String imagePath) throws FileNotFoundException {
        // creating from Uri doesn't work: gives a ASSET_UNAVAILABLE error
        //return Asset.createFromUri(Uri.parse(imagePath));

        final File file = new File(imagePath);    
        final ParcelFileDescriptor fd = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);

        return Asset.createFromFd(fd);
    }
 类似资料:
  • 为什么运算符只应该是4个字节却生成12个字节?当我引用变量时,这只是引用数组第一个索引的内存地址。实际上,我打印了第一个索引的内存地址,并将其与进行了比较,它们产生了相同的内存地址结果,这证实了它们都引用了数组的第一个索引,但是“array”产生了12个字节,而产生了4个字节。

  • 我阅读下面的文章,以了解我建立的ELK环境的日志技术。https://tpodolak.com/blog/tag/kibana/ 我在日志中添加了输入路径 C/日志/*.log。我有测试.log文件,它不为空,它有: 我的日志(C:\监控\logstash\日志\C:\监控\logstash\logs.log):

  • 问题内容: 我刚刚用来为我的JPA2实体生成MetaModel。 有人可以解释为什么在这种情况下将属性标记为易失性吗? 谢谢。 问题答案: 设置静态变量的线程可能与用于访问它们的线程不同,因此需要使用修饰符在所有线程之间同步内存。 没有的情况是这样的: 在初始化JPA提供程序之前,您的线程将访问变量,并获取静态字段 JPA提供程序是从其他线程初始化的,并将静态字段设置为非空值 您的线程再次访问静态

  • 1)对于上面的代码,如果LogSearchRemote实现bean是有状态的,那么 没有错误,但是如果LogSearchRemote实现bean是无状态的,那么会抛出异常“$Proxy53不能强制转换为hk.gov.ehr.service.tch.als.admin.logsearch.ejb.LogSearchRemote”,为什么? 2)对于有状态会话bean,每次 返回不同的logSearc

  • 1、任务中有未完成的子任务; 2、没有任务状态置位权限(有此权限的角色位【任务创建者/执行者】、【项目创建者】)

  • 启动应用程序的代码如下: 在A点,我只是关闭了上下文来检查哪些beans已经关闭,然后Hibernate60秒,以便有时间检查JMX控制台。我注意到,即使上下文是关闭的,但是生产者仍然在JMX中注册。之后,我跟踪了代码,注意到在上下文关闭时,KafkaTemplate调用以下代码: 这意味着它创建了一个生产者,但是因为它是事务性的,所以它不会被关闭。 这使得在关闭上下文时,的方法将清除缓存并物理地