ループ内の複数の写真をアンドロイドでダウンロードしますか?

異なるURLから複数の画像をダウンロードしたい

私の問題はすべての写真が読み込まれていないです
この問題は、エミュレータおよびモバイルバージョン2.2に表示されます。

私はそこに6写真をダウンロードしたい場合は、アプリ中に5。ランニング。
もし私がそこに25の写真をダウンロードしたいのであれば、12、16、または20のアプリだけです。ランニング。
私はエミュレータを実行するたびに、別の結果があります:S

これは2.3エミュレータで正しく動作します。

.java

public class DownloadPhotos extends Activity{

Context context;

// Progress dialog --> shows that something is loading 
ProgressDialog dialog;

// the layout where we insert the loaded pictures
LinearLayout linlayout;

// where we put all bitmaps after download
ArrayList photos = new ArrayList();

// URLs of photos we want to download
String [] urls = {
        "http://www.flowersegypt.net/upload/Flowers-Egypt-6.jpg","http://www.kabloom.com/images/product_images/KB_11100.jpg"
        ,"http://faisal-saud.com/wp/wp-conteant/uploads/2010/09/QuilledFlowers.jpg",
        "http://i3.makcdn.com/wp-content/blogs.dir/144387/files//2009/11/wedding-flowers1.jpg",
        "http://www.funonthenet.in/images/stories/forwards/flowers/Blue-Bell-Tunicate.jpg",
        "http://flowersfast.com/f4322dl.jpg"
}; 

@Override
protected void onCreate(Bundle savedInstanceState) {
   //TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

   //Setting the layout of the page to "downloadphoto.xml" layout
    setContentView(R.layout.downloadphoto);

   //Bind the previously defined layout with the lyout in the xml
    linlayout = (LinearLayout) findViewById(R.id.linearLayout1);

    this.context=this;

    //Checking if Internet is connected
    if(CheckConnection())
    {
       //Starts in Threads
        new THREAD1().execute("");
    }
}

//========== Threads ============
//===============================
private class THREAD1 extends AsyncTask
{

   //This function shows the progress dialog 
   //and it works on foreground 
   //while the needed data is loaded

    @Override
    protected void onPreExecute() {
       //TODO Auto-generated method stub
        super.onPreExecute();

        dialog = ProgressDialog.show(context , "", 
                "Loading. Please wait...", true);
    }   


   //This function is responsible for loading the data 
   //and it works in the background

    @Override
    protected Void doInBackground(String... params) {
       //TODO Auto-generated method stub

        //get all bitmaps of the predefined URLs
        for(int i=0 ;i

私が写真のダウンロードに使用した機能 1。

public static Bitmap getimage(String URL)
{
    Bitmap bitmap=null;
    InputStream in=null;
    try {
       //all spaces must be replaced by 20%
        String tmp = URL.replaceAll(" ", "20%");
        in = OpenHttpConnection(tmp);
        BitmapFactory.Options options=new BitmapFactory.Options();
       //deh mas2ola enha trag3 1/2 el image
        options.inSampleSize = 2 ;
        options.inScaled = true;
        bitmap = BitmapFactory.decodeStream(in, null, options);
        in.close();
    } catch (Exception e) {
       //TODO: handle exception
    }
    return bitmap;
}
ベストアンサー

あなたは完全に AsyncTask のアイデアを誤解しています。
AsyncTask
には、入力タイプ、進捗タイプ、出力タイプの3つのパラメータタイプがあります。あなたの場合、URIの配列を持っているので、入力タイプは
String でなければなりません。現在の進捗状況をユーザーに表示する場合は進捗タイプを
Integer に、そうでない場合は Void にします。出力タイプが
Bitmap であるため、 AsyncTask の結果は実際にダウンロードされた
Bitmap の配列になります。あなたの主な問題は、あなたの AsyncTas
kのデザインです。それを修正してアプリケーションをもう一度実行してみると、それ以降はうまくいく可能性が高いです。お役に立てれば。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です