Autore Topic: problema nel scaricare icone da un sito  (Letto 641 volte)

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
problema nel scaricare icone da un sito
« il: 08 Marzo 2014, 09:57:18 CET »
0
Buongiorno ragazzi, vado direttamente al dunque. Ho un problema riguardante questo metodo:

Codice (Java): [Seleziona]
public byte[] getImage(String code) {
                HttpURLConnection con = null ;
                InputStream is = null;
                try {
                        con = (HttpURLConnection) ( new URL(IMG_URL + code)).openConnection();
                        con.setRequestMethod("GET");
                        con.setDoInput(true);
                        con.setDoOutput(true);
                        con.connect();
                       
                        // Let's read the response
                        is = con.getInputStream();
                        byte[] buffer = new byte[1024];
                        ByteArrayOutputStream baos = new ByteArrayOutputStream();

                        while ( is.read(buffer) != -1)
                                baos.write(buffer);

                        return baos.toByteArray();
                }
                catch(Throwable t) {
                        t.printStackTrace();
                }
                finally {
                        try { is.close(); } catch(Throwable t) {}
                        try { con.disconnect(); } catch(Throwable t) {}
                }

                return null;

        }

non fa altro che scaricare le icone da un sito già predefinito. Il problema è che mi dà errore:

Codice: [Seleziona]
03-08 09:50:03.246: W/System.err(6052): java.io.FileNotFoundException: http://openweathermap.org/img/w/04d

03-08 09:50:03.246: W/System.err(6052):
at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:186)

03-08 09:50:03.246: W/System.err(6052): at com.ppesoft.meteolivehd.WeatherHttpClient.getImage(WeatherHttpClient.java:62)

facendo il debug, scopro che la variabile "is" rimane nulla anche dopo l'istruzione "is = con.getInputStream();".
Come mai? ho provato ad aprire il link, in questo caso, http://openweathermap.org/img/w/04d e vedo l'immagine. Spero che qualcuno mi aiuti perché non so come venirne a capo. GRazie mille anticipatamentE! ;)

Offline white$hark

  • Nuovo arrivato
  • *
  • Post: 42
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Nexus4
  • Sistema operativo:
    Windows 7
Re:problema nel scaricare icone da un sito
« Risposta #1 il: 08 Marzo 2014, 16:42:48 CET »
0
modifica l'activity che trovi in "questo esempio" secondo le tue preferenze e dovrebbe funzionare.

Offline giupardeb

  • Utente junior
  • **
  • Post: 115
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Glaxy Note 4
Re:problema nel scaricare icone da un sito
« Risposta #2 il: 09 Marzo 2014, 11:07:09 CET »
0
Grazie per la risposta, il logcat non mi da più errori.. e l'immagine che si dovrebbe settare nell'imageview, esiste, o almeno non è nulla. Ma a quanto pare non viene settata l'imageView nel layout, perché non la vedo, e non vedo neanche la descrizione dell'immagine nel caso in cui l'icona non viene caricata.. ecco come ho modificato il codice:

Serve per scaricare l'immagine
Codice (Java): [Seleziona]
public Bitmap downloadImage(String code) {
//              HttpURLConnection url = null ;

                Bitmap bitmap = null;
                InputStream stream = null;
                BitmapFactory.Options bmOptions = new BitmapFactory.Options();
                bmOptions.inSampleSize = 1;

                try {
//                      url = (HttpURLConnection) ( new URL(IMG_URL + code)).openConnection();
                        stream = getHttpConnection(IMG_URL + code);
                        bitmap = BitmapFactory.
                                        decodeStream(stream, null, bmOptions);
                        stream.close();
                } catch (IOException e1) {
                        e1.printStackTrace();
                }
                return bitmap;
        }

Questo pezzo di codice invece serve per riprendere l'icona e inserirla nell'imageview:

Codice (Java): [Seleziona]
protected Weather doInBackground(String... params) {
                        Weather weather = new Weather();
                        String data = ( (new WeatherHttpClient()).getWeatherData(params[0]));

                        try {
                                weather = JSONWeatherParser.getWeather(data);

                                // Let's retrieve the icon
//                              weather.iconData = ( (new WeatherHttpClient()).getImage(weather.currentCondition.getIcon()));
                               
                                weather.setImg((new WeatherHttpClient()).downloadImage(weather.currentCondition.getIcon()));

                        } catch (JSONException e) {    
                                e.printStackTrace();
                        }
                        return weather;

                }

                @Override
                protected void onPostExecute(Weather weather) {
                        super.onPostExecute(weather);

                        if (weather.iconData != null && weather.iconData.length > 0) {
//                              Bitmap img = BitmapFactory.decodeByteArray(weather.iconData, 0, weather.iconData.length);
                                imgView.setImageBitmap(weather.getImg());
                        }

Perché non funziona ??? :-o o_O

Post unito: 09 Marzo 2014, 12:10:35 CET
problema risolto..non si visualizzava l'immagine perché facevo dei controlli sbagliati..Grazie!!!  :-) :-)
« Ultima modifica: 09 Marzo 2014, 12:10:35 CET da giupardeb, Reason: Merged DoublePost »