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);
        }
    }
  • 相关阅读:
    EntityFramework的安装
    利用Xml架构生成实体访问类
    C#生成XSD规范
    利用Vistual Studio自带的xsd.exe工具,根据XML自动生成XSD
    在.net中序列化读写xml方法的总结
    MVP设计模式的实现
    c#万能视频播放器
    libavcodec是一款LGPL自由软件编解码库,用于视频和音频数据的编解码工作
    用C#实现多种方式播放Wav声音
    Using the G711 standard
  • 原文地址:https://www.cnblogs.com/nanfei/p/8883960.html
Copyright © 2011-2022 走看看