5

Ciao Ragazzi, sto cercando di caricare le immagini dal server, in base al numero di identificazione, quindi quale sarebbe il metodo migliore per recuperarlo dal servizio Web. Qualcuno potrebbe guidarmi? ?come ottenere l'immagine dal servizio web all'applicazione Android

package com.crispsys; 

import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URL; 

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class imageviewer extends Activity { 
    /** Called when the activity is first created. */ 

    Bitmap image; 
    private TextView ordernumber; 
    ImageView imageView; 
    private Button butt; 
    String Str="image",ordno; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.imageviewerr); 

     this.butt = (Button) this.findViewById(R.id.getbutt); 
      this.imageView =(ImageView) findViewById(R.id.blodig); 
      this.ordernumber=(TextView)this.findViewById(R.id.ordernotext); 

      final Bundle getdata = getIntent().getExtras(); 

      if (getdata != null)  
      { 
       ordno=getdata.getString("orono"); 
       ordernumber.setText(ordno); 
      } 


     this.butt.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 


       Toast.makeText(getApplicationContext(),"loading" , Toast.LENGTH_LONG).show(); 

         URL url = null; 


         try 
         { 

          url = new URL("http://www.cyberstudents.in/aaa/car.jpg"); 

         } 
         catch (MalformedURLException e) 
         { 
          e.printStackTrace(); 
         } 
         try { 
          image = BitmapFactory.decodeStream(url.openStream()); 

         } 
         catch (IOException e) 
         { 
          e.printStackTrace(); 
         } 

       imageView.setImageBitmap(image); 
      } 
     }); 

    } 
} 

file XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:background="@drawable/cr_isp" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TableRow 
     android:id="@+id/tableRow1" 
     android:layout_width="match_parent" 
     android:gravity="center" 
     android:paddingTop="20dp" 
     android:layout_height="wrap_content" > 

     <TextView 
      android:id="@+id/ordernotext" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#8B8682" 
      android:text="" /> 


    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow1" 
     android:layout_width="match_parent" 
     android:gravity="center" 
     android:paddingTop="20dp" 
     android:layout_height="wrap_content" > 

     <Button 
      android:id="@+id/getbutt" 
      android:layout_width="210dp" 
      android:layout_height="40dp" 
      android:background="@drawable/bcbut" 
      android:textColor="#8B8682" 
      android:text="Get Block Dig" /> 

    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow2" 
     android:layout_width="match_parent" 
     android:gravity="center" 
     android:paddingTop="20dp" 
     android:layout_height="wrap_content" > 

     <ImageView 
      android:id="@+id/blodig" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/ic_launcher" /> 

    </TableRow> 

</LinearLayout> 
  • provato con questa codifica ma ho potuto lavorare solo con le immagini di piccole dimensioni quando vado per le immagini di grandi dimensioni doesnt funziona, rimane lo stesso, i cant trova qualsiasi errore e mostra la stessa schermata
+0

Descrivi la tua domanda. Stai analizzando XML ?? –

+0

prova a cercare 'Universal Image Loader in Android' –

+0

Krishna Suthar actualli ho provato con entrambi i tipi url e anche nella stringa di conversione base64 quando controllo con il codice di cui sopra potrei caricare immagini di piccole dimensioni, – user1389233

risposta

1

fare una richiesta Ottieni con quel numero ID al servizio web e il servizio risponde con l'immagine richiesta.

2

Dipende dalla risposta del server, cioè in che forma fornisce l'immagine. Può essere in forma di stringa di base 64 o un URL.

Se si tratta di una stringa 64 di base, è necessario ricodificarlo utilizzando la classe base64 in java e, se si tratta dell'url, è sufficiente impostare l'immagine utilizzando bitmap convalidando l'immagine in bitmap dall'URL. È necessario inoltrare una richiesta al server utilizzando httpGet nel modo seguente.

public static String connect(String url) throws IOException { 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpGet httpget = new HttpGet(url); 
    HttpResponse response; 
    try { 
     response = httpclient.execute(httpget); 
     HttpEntity entity = response.getEntity(); 
     if (entity != null) { 
      InputStream instream = entity.getContent(); 
      result = convertStreamToString(instream); 
      instream.close(); 
     } 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return result; 
} 


private static String convertStreamToString(InputStream input) { 
    /* 
    * To convert the InputStream to String we use the 
    * BufferedReader.readLine() method. We iterate until the BufferedReader 
    * return null which means there's no more data to read. Each line will 
    * appended to a StringBuilder and returned as String. 
    */ 
    BufferedReader reader = new BufferedReader(new InputStreamReader(input)); 
    StringBuilder buffer = new StringBuilder(); 
    String line = null; 
    try { 
     while ((line = reader.readLine()) != null) { 
      buffer.append(line + "\n"); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      input.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return buffer.toString(); 
} 
+0

Il q riguarda le immagini non stringa . – Tina

10

È possibile utilizzare il caricatore di immagini asincrone per caricare le immagini in modo asincrono. Controlla il codice qui sotto.

private class FetchImageTask extends AsyncTask<String, Integer, Bitmap> { 
    @Override 
    protected Bitmap doInBackground(String... arg0) { 
     Bitmap b = null; 
     try { 
      b = BitmapFactory.decodeStream((InputStream) new URL(arg0[0]).getContent()); 
     } 
     catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return b; 
    } 
} 

Per implementare utilizzare questo codice.

new FetchImageTask() { 
     @Override 
     protected void onPostExecute(Bitmap result) { 
      if (result != null) { 
       image.setImageBitmap(result); 
      } 
     } 
    }.execute("IMAGE_URL"); 
Problemi correlati