sd

package wld.bawei.com.wulidong2018115;


import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.VideoView;


import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;


import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer;
import wld.bawei.com.wulidong2018115.data.BeanDao;
import wld.bawei.com.wulidong2018115.data.DaoSession;


public class MainActivity extends AppCompatActivity {


    @BindView(R.id.xz) Button xz;
    @BindView(R.id.jx) Button jx;
    private DaoSession daoSession;
    private BeanDao beanDao;
    ProgressBar pb;
    TextView tv;
    ImageView imageView;
    int fileSize;
    int downLoadFileSize;
    String fileEx,fileNa,filename;
    //用来接收线程发送来的文件下载量,进行UI界面的更新
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg)
        {//定义一个Handler,用于处理下载线程与UI间通讯
            if (!Thread.currentThread().isInterrupted())
            {
                switch (msg.what)
                {
                    case 0:
                        pb.setMax(fileSize);
                    case 1:
                        pb.setProgress(downLoadFileSize);
                        int result = downLoadFileSize * 100 / fileSize;
                        tv.setText(result + "%");
                        break;
                    case 2:
                        Toast.makeText(MainActivity.this, "文件下载完成", Toast.LENGTH_SHORT).show();
                        FileInputStream fis = null;
                        try {
                            fis = new FileInputStream(Environment.getExternalStorageDirectory() + File.separator + "/ceshi/" + filename);
                        } catch (FileNotFoundException e) {
                            e.printStackTrace();
                        }
                        File videoFile = new File(Environment.getExternalStorageDirectory()
                                .toString() + "/test/demo.mp4");
                        Uri uri = Uri.fromFile(videoFile);
                        String s = uri.toString();
                        JCVideoPlayer videoplayer = (JCVideoPlayer) findViewById(R.id.videoplayer);
                         videoplayer.setUp(s, JCVideoPlayer.SCREEN_LAYOUT_LIST, "下载完成");


                    break;


                    case -1:
                        String error = msg.getData().getString("error");
                        Toast.makeText(MainActivity.this, error, Toast.LENGTH_SHORT).show();
                        break;
                }
            }
            super.handleMessage(msg);
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        pb=(ProgressBar)findViewById(R.id.progressBar);
        tv=(TextView)findViewById(R.id.textView);
        tv.setText("0%");
        daoSession = GreenDaoUtils.getDaoSession();// 调用到数据库
        beanDao=daoSession.getBeanDao();
    }
    public void down_file(String url,String path) throws IOException {
        //下载函数
        filename=url.substring(url.lastIndexOf("/") + 1);
        //获取文件名
        URL myURL = new URL(url);
        URLConnection conn = myURL.openConnection();
        conn.connect();
        InputStream is = conn.getInputStream();
        this.fileSize = conn.getContentLength();//根据响应获取文件大小
        if (this.fileSize <= 0) throw new RuntimeException("无法获知文件大小 ");
        if (is == null) throw new RuntimeException("stream is null");
        File file1 = new File(path);
        File file2 = new File(path+filename);
        if(!file1.exists()){
            file1.mkdirs();
        }
        if(!file2.exists()){
            file2.createNewFile();
        }
        FileOutputStream fos = new FileOutputStream(path+filename);
        //把数据存入路径+文件名
        byte buf[] = new byte[1024];
        downLoadFileSize = 0;
        sendMsg(0);
        do{
            //循环读取
            int numread = is.read(buf);
            if (numread == -1)
            {
                break;
            }
            fos.write(buf, 0, numread);
            downLoadFileSize += numread;
            beanDao.insert(new Bean(null,"",downLoadFileSize));
            sendMsg(1);//更新进度条
        } while (true);
        sendMsg(2);//通知下载完成
        try{
            is.close();
        } catch (Exception ex) {
            Log.e("tag", "error: " + ex.getMessage(), ex);
        }
    }
    //在线程中向Handler发送文件的下载量,进行UI界面的更新
    private void sendMsg(int flag)
    {
        Message msg = new Message();
        msg.what = flag;
        handler.sendMessage(msg);
    }
    @OnClick({R.id.xz,R.id.jx})
    public void setTv(View v){
        switch (v.getId()){
            case R.id.xz:
                new Thread(){
                    public void run(){
                        try {
                            down_file("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4", Environment
                                    .getExternalStorageDirectory().toString()
                                    + "/test/demo.mp4");
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }.start();
                xz.setText("暂停");
                break;
            case R.id.jx:


                break;
        }
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值