zoukankan      html  css  js  c++  java
  • Android 异步下载

    package com.example.demo1;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    
    import com.tiffdecoder.TiffDecoder;
    
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.os.AsyncTask;
    import android.widget.ImageView;
    
    public class DownloadImagesTask extends AsyncTask<Object, Void, Bitmap> {
        ImageView imageView = null;
        Activity activity = null;
        
        @Override
        protected Bitmap doInBackground(Object... parameters) {
            this.imageView = (ImageView)parameters[0];
            this.activity = (Activity)parameters[1];
            try {
                return download_Image((String)imageView.getTag());
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
        
        @Override
        protected void onPostExecute(Bitmap result) {
            if(result != null)
                imageView.setImageBitmap(result);
        }
        
        private Bitmap download_Image(String url) throws IOException {
            File file = downloadFile(url);
            TiffDecoder.nativeTiffOpen(file.getPath());
            int[] pixels = TiffDecoder.nativeTiffGetBytes();
            Bitmap mBitmap = Bitmap.createBitmap(pixels, TiffDecoder.nativeTiffGetWidth(), TiffDecoder.nativeTiffGetHeight(),Bitmap.Config.ARGB_8888);
            TiffDecoder.nativeTiffClose();
            return mBitmap;
        }
        
        private File downloadFile(String strUrl) throws IOException
        {
            URL url = new URL(strUrl);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod("GET");
            urlConnection.setDoOutput(true);
            urlConnection.connect();
            
            File file = File.createTempFile("myfile", ".tif", this.activity.getCacheDir());
            if(file.exists())
                file.delete();
            file.createNewFile();
    
            FileOutputStream fileOutput = new FileOutputStream(file);
            InputStream inputStream = urlConnection.getInputStream();
            byte[] buffer = new byte[1024];
            int bufferLength = 0;
            while ( (bufferLength = inputStream.read(buffer)) > 0 ) {
                fileOutput.write(buffer, 0, bufferLength);
            }
            fileOutput.close();
            return file;
        }
    }
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            StrictMode.setThreadPolicy(new 
                    StrictMode.ThreadPolicy.Builder().detectDiskReads().detectDiskWrites().detectNetwork().penaltyLog().build());
                            StrictMode.setVmPolicy(
                    new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
            
                            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
    
            ImageView image = (ImageView)this.findViewById(R.id.image);
            image.setTag("http://xibei1-image.xxx.com/00006009b4673bbc-ff2a-49bd-91fe-764c01b2acce01.tif");
            new DownloadImagesTask().execute(image,this);
        }
    }
  • 相关阅读:
    在桌面创建robotframework Ride的快捷方式启动RIDE
    RIDE 接口自动化请求体参数中文时报错:“UnicodeDecodeError: 'ascii' codec can't decode byte 0xd7 in position 9......”
    下拉框选择
    Python下安装MySQLdb模块
    出现 Request Entity Too Large问题的解决方法
    Centos配置nginx反向代理8090端口到80端口
    超简单Centos+Docker+Halo搭建java向博客
    JAVA使用POI如何导出百万级别数据
    Mybatis的MapperRegistry错误
    Navicat连接mysql8出现1251错误
  • 原文地址:https://www.cnblogs.com/nanfei/p/8883960.html
Copyright © 2011-2022 走看看