2017-05-02 16 views
0

GoogleプレイスAPIを使用して、AndroidのアプリにURLから画像を読み込む際に問題があります。AndroidのGoogleプレイスから画像を読み込み

私はAPIを使って部品を手に入れました。ブラウザにURLを入力するとイメージが表示されます。コードは次の行で失敗します。 ビットマップmyBitmap = BitmapFactory.decodeStream(入力);

printlnコマンドを実行せずにcatch節のreturn nullにジャンプするのは変わったことです。

google APIの最初のURLはリダイレクトページであるため、私は2つのURLを使用していることを説明する必要があります。私は以下

(私が意味する、それが 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; 
    } 
} 

あなたの助けに感謝します。このような

+0

ピカソを使用してみてくださいhttp://square.github.io/picasso/非常に簡単です –

+0

問題が解決しました。それは本当に役に立ちました、ありがとう! –

答えて

1

使用ピカソ:

は、アダプタでImageViewのリサイクルとダウンロードキャンセルの取り扱い:

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

これは、次の手順を実行します。 メモリを最小限に抑えた複雑な画像変換。 自動メモリとディスクキャッシュ。

関連する問題