2013年8月22日木曜日

BitmapFun.zip

android Developersの Displaying Bitmaps Efficiently を勉強しています。
AsyncTaskは使ったことあるし、わかっているつもりだったのですが、ここのサンプルを読むと「こんな使い方するんだ!」という新たな驚きがありました。

サンプルコード BitmapFun.zip なのですが動かしてみると、サンプルの写真がキレイで感動すら覚えます。しかもネットワーク上の写真をHTTPで取得するサンプルでいろいろ勉強になります。

会社のパソコンでエミュレータ(AVD)で動かしたら、画像のダウンロードに失敗しました。
プロキシの影響でした。コードを書き換えると画像のダウンロードができるようになりました。

クラス: com.example.android.bitmapfun.util.ImageFetcher
メソッド: downloadUrlToStream(String, OutputStream)

urlConnection = (HttpURLConnection) url.openConnection();
これを書き直す。

↓↓↓↓
java.net.SocketAddress socketAddress = java.net.InetSocketAddress.createUnresolved("host", 50000/*port番号*/);
// java.net.SocketAddress socketAddress = new java.net.InetSocketAddress("host", 50000/*port番号*/); でもよいかも?
java.net.Proxy proxy = new java.net.Proxy(java.net.Proxy.Type.HTTP, socketAddress);
urlConnection = (HttpURLConnection) url.openConnection(proxy);

※"host"とport番号はお使いの環境にあわせてください。

詳細は HttpURLConnection を参照ください!


追伸
どうでもよいことですが、プロキシの設定をすればよいと気づいてコードを書き直したのですが、なかなか思ったとおりに動いてくれませんでした。

SocketAddress socketAddress = InetSocketAddress.createUnresolved("host", 50000/*port番号*/);
Proxy proxy = new Proxy(Proxy.Type.HTTP, socketAddress);
urlConnection = (HttpURLConnection) url.openConnection(proxy);

urlConnection = (HttpURLConnection) url.openConnection(); // proxy設定なしで、urlConnectionをセット

★の行が残ったままになっていました。
追加した行にばかり気を取られて、あれこれ悩んで、気づくまで1時間くらい時間がかかりました。。。
iTunes Store(Japan)

0 件のコメント:

コメントを投稿