从Android中的Google商家信息加载图片

时间:2017-05-02 09:08:22

标签: android imageview google-places-api

我在使用Google Places API将图片从网址加载到我的Android应用中时遇到了问题。

我得到了API工作的部分,如果我在浏览器中输入URL,我可以看到图像。代码在以下行中失败: 位图myBitmap = BitmapFactory.decodeStream(输入);

奇怪的是,它只是跳转到catch子句中的return null而不执行println命令。

我还应该解释一下,我使用了两个网址,因为Google API中的第一个网址是重定向网页。

我认为问题在于,正在加载的最终页面实际上并不是真正的"真实的"图像(我的意思是它看起来像 https://lh4.googleusercontent.com/XXX/s1600-w400/ 而不是像 http://something/image.jpg

以下是我使用的整个方法:

public  Bitmap getImageData(Place p) {
    try {
        String src= "https://maps.googleapis.com/maps/api/place/photo?maxwidth=400&photoreference="+
                p.getPhoto_reference()+
                "&key="+
                this.context.getResources().getString(places_api);
        Log.d("srcsrc", src);
        URL url = new URL(src);
        HttpsURLConnection ucon = (HttpsURLConnection) url.openConnection();
        ucon.setInstanceFollowRedirects(false);
        URL secondURL = new URL(ucon.getHeaderField("Location"));
        HttpsURLConnection connection = (HttpsURLConnection) secondURL.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        Bitmap myBitmap = BitmapFactory.decodeStream(input);
        return myBitmap; 
    }
    catch (Exception e)
    {
        e.printStackTrace();
        System.out.println("Bitmap exception" + e);
        return null;
    }
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

像这样使用毕加索:

            Picasso.with(context).load(src).into(imageView );

它将执行以下操作:

在适配器中处理ImageView回收和下载取消。 复杂的图像转换,内存使用最少。 自动内存和磁盘缓存。