Android中视频文件的下载和播放

                    String path = "http:.........."; // 下载地址

                    // 创建文件夹,在存储卡下
                    String dirName = Environment.getExternalStorageDirectory() + "/" + mContext.getPackageName();
                    File file = new File(dirName);
                    // 文件夹不存在时创建
                    if (!file.exists()) {
                        file.mkdir();
                    }

                        // 下载后的文件名
                        int i = path.lastIndexOf("/"); // 取的最后一个斜杠后的字符串为名
                        String fileName = dirName + path.substring(i, path.length());
                        File file1 = new File(fileName);
                        if (file1.exists()) {
                            // 如果已经存在, 就不下载了, 去播放
                            startVideo(fileName);
                        } else {
                            new Thread(new Runnable() {
                                @Override
                                public void run() {
                                    DOWNLOAD();
                                }
                            }).start();
                        }
// 下载具体操作
    private void DOWNLOAD() {
        try {
            URL url = new URL(path);
            // 打开连接
            URLConnection conn = url.openConnection();
            // 打开输入流
            InputStream is = conn.getInputStream();
            // 创建字节流
            byte[] bs = new byte[1024];
            int len;
            OutputStream os = new FileOutputStream(fileName);
            // 写数据
            while ((len = is.read(bs)) != -1) {
                os.write(bs, 0, len);
            }
            // 完成后关闭流
            Log.e(TAG, "download-finish");
            os.close();
            is.close();
            //            }
        } catch (Exception e) {
            e.printStackTrace();
            Log.e(TAG, "e.getMessage() --- " + e.getMessage());
        }
    }
// 播放视频
    private void startVideo(String videoURI) {
        videoview.setVisibility(View.VISIBLE);
        videoview.setLayoutParams(new RelativeLayout.LayoutParams(UtilsTools.getCurScreenWidth(mContext), UtilsTools.getCurScreenWidth(mContext) / 3 * 4)); // 此行代码是设置视频的宽高比是3/4,不需要就注释掉即可
        // 设置播放加载路径
        //        videoview.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.aaa));
        videoview.setVideoURI(Uri.parse(videoURI));
        // 播放
        videoview.start();
        // 循环播放
        //        videoview.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        //            @Override
        //            public void onCompletion(MediaPlayer mediaPlayer) {
        //                videoview.start();
        //            }
        //        });
    }



你可能感兴趣的:(视频,工具类,下载,JAVA基础,File)