2009-07-21 20 views

答えて

5

をバック与えることについて、本当に良いものではありません場合は、画像をダウンロードするには、次のコードを使用することができますあなたにナットを駆動します:

URLConnection connection = uri.toURL().openConnection(); 
connection.connect(); 
InputStream is = connection.getInputStream(); 
BufferedInputStream bis = new BufferedInputStream(is, 8 * 1024); 
Bitmap bmp = BitmapFactory.decodeStream(bis); 
bis.close(); 
is.close(); 

AndroidManifest.xmlで次の権限が必要です:

<uses-permission android:name="android.permission.INTERNET" /> 
+0

ヘッダーを設定してステータスコードを読み取る場合は、HttpURLConnectionへの接続をキャストします。 – ThomasRS

5

現在、AndroidでサポートされているHTTPクライアントライブラリがありますが、細粒度コントロールの場合は、URL & HttpURLConnectionを使用できます。コードは次のようになります:てgetResponse()は次のようになり、あなたのケースであなたが戻ってバイナリデータの 山を取得しているあなたはバイト配列 へのStringBufferを変更する場合があります

URL connectURL = new URL(<your URL goes here>); 
HttpURLConnection conn = (HttpURLConnection)connectURL.openConnection(); 

// do some setup 
conn.setDoInput(true); 
conn.setDoOutput(true); 
conn.setUseCaches(false); 
conn.setRequestMethod("GET"); 

// connect and flush the request out 
conn.connect(); 
conn.getOutputStream().flush(); 

// now fetch the results 
String response = getResponse(conn); 

をし、より大きなインクリメントで読み込みをチャンクします。あなたが大きくなる可能性が画像データについて話していると

private String getResponseOrig(HttpURLConnection conn) 
{ 
    InputStream is = null; 
    try 
    { 
     is = conn.getInputStream(); 
     // scoop up the reply from the server 
     int ch; 
     StringBuffer sb = new StringBuffer(); 
     while((ch = is.read()) != -1) { 
      sb.append((char)ch); 
     } 
     return sb.toString(); 
    } 
    catch(Exception e) 
    { 
     Log.e(TAG, "biffed it getting HTTPResponse"); 
    } 
    finally 
    { 
     try { 
     if (is != null) 
      is.close(); 
     } catch (Exception e) {} 
    } 

    return ""; 
} 

、あなたはAndroidの約勤勉である必要があり、他のものは、あなたができるだけ早くすることができますようにあなたのメモリを解放することを確認作っている、あなたは、ヒープの16メガバイトのみを持っていますすべてのアプリケーションのためにプレーし、それすることが速くなくなるとGCを使用すると、メモリリソースに

+0

デスクトップ上で実行されているエミュレータは、アプリケーションが接続を許可していインターネット ??私のエミュレータは、デバイスがインターネットに接続することを許可していないと思う。 –

+1

はい、ネットワークスタックがエミュレートされます – jottos

11

いけないのAndroidManifest.xmlで、アプリをWebに接続する権限を与えることを忘れ

<uses-permission android:name="android.permission.INTERNET" /> 
関連する問題