Emil Gelman
Emil Gelman

Reputation: 135

Load image from Google Places in Android

I'm having trouble with loading an image from a URL into my Android app using the Google Places API.

I got the part with the API working and I can see the image if I type the URL in my browser. The code fails in the below line: Bitmap myBitmap = BitmapFactory.decodeStream(input);

The strange thing is, it simply jumps to the return null in the catch clause without executing the println commands.

I should also explain that I'm using two URL's since the first URL in the google API is a redirect page.

I assume that the problem is that the final page that's being loaded isn't actually a "real" image (I mean it looks like https://lh4.googleusercontent.com/XXX/s1600-w400/ rather than something like http://something/image.jpg)

Below is the entire method I'm using:

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;
    }
}

Appreciate your help.

Upvotes: 0

Views: 620

Answers (1)

wonderPub
wonderPub

Reputation: 75

use Picasso like this :

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

It will do the following:

Handling ImageView recycling and download cancelation in an adapter. Complex image transformations with minimal memory use. Automatic memory and disk caching.

Upvotes: 1

Related Questions