Dato un Url per un'immagine, voglio eseguirne il downoload e incollarlo sulla mia tela in Android. Come posso recuperare l'immagine nella mia app?Come lavorare con un'immagine usando url in Android?
Per favore aiuto.
Grazie, de costo.
Dato un Url per un'immagine, voglio eseguirne il downoload e incollarlo sulla mia tela in Android. Come posso recuperare l'immagine nella mia app?Come lavorare con un'immagine usando url in Android?
Per favore aiuto.
Grazie, de costo.
è possibile utilizzare il seguente codice per scaricare un'immagine:
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();
Richiede la seguente autorizzazione in AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
Esiste una libreria client HTTP che potrebbe essere supportata in Android ora, ma per qualsiasi controllo a grana fine è possibile utilizzare l'URL & HttpURLConnection. il codice sarà simile a questa:
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);
dove getResponse() simile a questa, nel tuo caso hai trovato un mucchio di dati binari indietro si potrebbe desiderare di cambiare lo StringBuffer ad un array di byte e pezzo le letture da un incremento maggiore.
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 "";
}
Come si sta parlando di dati di immagine che può essere di grandi dimensioni, le altre cose che dovete essere assidui circa in Android è fare in modo di rilasciare la memoria non appena si può, hai solo 16 MB di memoria riservata per giocare con per tutte le applicazioni e si esaurisce velocemente e il GC sarà farti impazzire se non si è veramente buono di restituire le risorse di memoria
fa l'emulatore quando si esegue sul desktop consentono l'applicazione a cui connettersi internet ?? Penso che il mio emulatore non permetta al dispositivo di connettersi a internet. –
sì, lo stack di rete verrà emulato – jottos
Non dimenticate di dare l'applicazione del permesso di connettersi al Web,
nel AndroidManifest.xml:
<uses-permission android:name="android.permission.INTERNET" />
E inoltrare la connessione a HttpURLConnection se si desidera impostare le intestazioni e leggere il codice di stato. – ThomasRS