如何在Android Wear中加载URL图片?

10

目前我正在使用Glide库在Android Wear中加载图片。它大部分情况下无法加载图片,但有时会成功加载。不知道我的代码出了什么问题。

注意:通过蓝牙连接设备,我可以通过在移动设备上的Broadcast Receiver成功获取Android Wear中Web服务的JSON响应。除了图片之外,所有数据都能在手表上正确显示。

Glide.with(mContext)
   .load("http://www.hanamoflorist.ca/images/uploads/Spring5InchesCubeVaseArrangement$45.00.jpg")
      .listener(new RequestListener<String, GlideDrawable>() {

        @Override
        public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
            Log.e("exception in image", "" + e);
            Toast.makeText(mContext, "" + e, Toast.LENGTH_LONG).show();
            return false;
        }

        @Override
        public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
            return false;
        }
    }).error(R.drawable.ic_placeholder_image)
        .into(((ItemViewHolder) holder).ivCardImage);
2个回答

2
我认为你应该在可穿戴设备中使用DaVinci进行图片加载。
DaVinci.with(context).load("Your Url").into(imageView);

请确保使用与库相同的playservices版本。

您可以通过将以下内容添加到gradle中实现同步:

wear:

compile ('com.github.florent37:davinci:1.0.3@aar'){
    transitive = true
}

移动端:

compile ('com.github.florent37:davincidaemon:1.0.3@aar'){
     transitive = true
}

希望您能得到所需的内容。


0
问题是由于套接字超时引起的...
您可以使用Glide本身解决它。您只需要使用带有OKHttp3的Glide,并为OkHttpClient设置超时限制。
在您的模块依赖项中。
compile 'com.github.bumptech.glide:glide:3.7.0'
compile ('com.github.bumptech.glide:okhttp3-integration:1.4.0'){
    exclude group: 'glide-parent'
}

自定义 Glide 设置

public class MyGlideModule implements GlideModule {
   @Override
   public void applyOptions(Context context, GlideBuilder builder) {

   }

   @Override
   public void registerComponents(Context context, Glide glide) {

       OkHttpClient.Builder builder = new OkHttpClient.Builder();

       // set your timeout here
       builder.readTimeout(30, TimeUnit.SECONDS);
       builder.writeTimeout(30, TimeUnit.SECONDS);
       builder.connectTimeout(30, TimeUnit.SECONDS);
       OkHttpUrlLoader.Factory factory = new    OkHttpUrlLoader.Factory(client);
       glide.register(GlideUrl.class, InputStream.class, factory);
   }
}

在清单文件中放置以下代码。
 <meta-data
        android:name="YourPath.MyGlideModule"
        android:value="GlideModule" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接