2009-07-21 24 views

Odpowiedz

5

można użyć następującego kodu, aby pobrać obraz:

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(); 

Wymaga następującego zezwolenia w AndroidManifest.xml:

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

I przesyłaj połączenie do HttpURLConnection, jeśli chcesz ustawić nagłówki i odczytać kod stanu. – ThomasRS

5

Istnieje biblioteka klienta HTTP, która może być obecnie obsługiwana w systemie Android, ale w celu kontroli dowolnego drobnego ziarna można użyć adresu URL & HttpURLConnection. kod będzie wyglądać mniej więcej tak:

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

gdzie getResponse() wygląda tak, w przypadku, gdy są coraz stos danych binarnych kopii może chcesz zmienić StringBuffer do tablicy bajtów i fragmentuj odczyty o większy przyrost.

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

Gdy mówimy o danych obrazu, które mogą być duże, inne rzeczy, które trzeba być wytrwały ow Android jest upewnienie zwolnieniu pamięci tak szybko, jak to możliwe, że masz tylko 16 MB sterty do zabawy dla wszystkich aplikacji i uruchamia się szybko i GC zawiezie nakrętki, jeśli nie jesteś naprawdę dobry o oddanie zasobów pamięci

+0

Czy emulator, gdy uruchomiony na pulpicie zezwolić aplikacji do łączenia się Internet? Myślę, że mój emulator nie pozwala urządzeniu podłączyć się do Internetu. –

+1

Tak, stos sieciowy będzie emulowany – jottos

11

Nie zapomnij dać App gość połączyć się z internetem,

w AndroidManifest.xml:

<uses-permission android:name="android.permission.INTERNET" /> 
Powiązane problemy