android下载文件,文件包括视频以及各种文件

在做项目中要进行文件的下载以及调用系统软件打开,文件是服务端,以下是一些代码片段:

运用progressbar和http协议下载文件:

如果没有这个文件的就先进行创建并下载,如果有的话就打开:

private void playMeida() {

file2 = new File(savePAth + "/" + filename);

if (!file2.exists()) {

new Thread() {

public void run() {

try {

down_file(path, savePAth);

} catch (ClientProtocolException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}.start();

} else {

Intent intent = new Intent(Intent.ACTION_VIEW);

Uri data = Uri.parse(savePAth + "/" + filename);

if (type.equals("Document 22")) {

intent.setDataAndType(data, "video/*");

} else {

intent.setDataAndType(data, "application/*");

}

startActivity(intent);

}

}

public void down_file(String url, String path) throws IOException {

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("can not know the file`s size ");

if (is == null)

throw new RuntimeException("stream is null");

FileOutputStream fos = new FileOutputStream(path + "/" + filename);

// 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;

sendMsg(1);

} while (true);

sendMsg(2);

try {

is.close();

} catch (Exception ex) {

Log.e("tag", "error: " + ex.getMessage(), ex);

}

}

这个是控制progressbar的,利用线程的思维去做

private Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

if (!Thread.currentThread().isInterrupted()) {

switch (msg.what) {

case 0:

mPbImage.setMax(fileSize);

mPbTv.setMax(fileSize);

case 1:

mPbImage.setProgress(downLoadFileSize);

mPbTv.setProgress(downLoadFileSize);

break;

case 2:

Toast.makeText(getActivity(), "download is completed", 1)

.show();

break;

case -1:

String error = msg.getData().getString("error");

Toast.makeText(getActivity(), error, 1).show();

break;

}

}

super.handleMessage(msg);

}

};

注意事项:

1.由于url是服务端传过来的,所以不会有.doc,.xslx这种的结果,所以还要进行转换,根据mineType的转化

for (int i = 0; i < MIME_MapTable.length; i++) {

if (mineType != null

&& mineType.equals(MIME_MapTable[i][1])) {

productTpye = MIME_MapTable[i][0];

}

}

private String[][] MIME_MapTable = {

{ ".3gp", "video/3gpp" },

{ ".apk", "application/vnd.android.package-archive" },

{ ".asf", "video/x-ms-asf" },

{ ".avi", "video/x-msvideo" },

{ ".bin", "application/octet-stream" },

{ ".bmp", "image/bmp" },

{ ".c", "text/plain" },

{ ".class", "application/octet-stream" },

{ ".conf", "text/plain" },

{ ".cpp", "text/plain" },

{ ".doc", "application/msword" },

{ ".docx",

"application/vnd.openxmlformats-officedocument.wordprocessingml.document" },

{ ".xls", "application/vnd.ms-excel" },

{ ".xlsx",

"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" },

{ ".exe", "application/octet-stream" },

{ ".gif", "image/gif" },

{ ".gtar", "application/x-gtar" },

{ ".gz", "application/x-gzip" },

{ ".h", "text/plain" },

{ ".htm", "text/html" },

{ ".html", "text/html" },

{ ".jar", "application/java-archive" },

{ ".java", "text/plain" },

{ ".jpeg", "image/jpeg" },

{ ".jpg", "image/jpeg" },

{ ".js", "application/x-javascript" },

{ ".log", "text/plain" },

{ ".m3u", "audio/x-mpegurl" },

{ ".m4a", "audio/mp4a-latm" },

{ ".m4b", "audio/mp4a-latm" },

{ ".m4p", "audio/mp4a-latm" },

{ ".m4u", "video/vnd.mpegurl" },

{ ".m4v", "video/x-m4v" },

{ ".mov", "video/quicktime" },

{ ".mp2", "audio/x-mpeg" },

{ ".mp3", "audio/x-mpeg" },

{ ".mp4", "video/mp4" },

{ ".mpc", "application/vnd.mpohun.certificate" },

{ ".mpe", "video/mpeg" },

{ ".mpeg", "video/mpeg" },

{ ".mpg", "video/mpeg" },

{ ".mpg4", "video/mp4" },

{ ".mpga", "audio/mpeg" },

{ ".msg", "application/vnd.ms-outlook" },

{ ".ogg", "audio/ogg" },

{ ".pdf", "application/pdf" },

{ ".png", "image/png" },

{ ".pps", "application/vnd.ms-powerpoint" },

{ ".ppt", "application/vnd.ms-powerpoint" },

{ ".pptx",

"application/vnd.openxmlformats-officedocument.presentationml.presentation" },

{ ".prop", "text/plain" }, { ".rc", "text/plain" },

{ ".rmvb", "audio/x-pn-realaudio" }, { ".rtf", "application/rtf" },

{ ".sh", "text/plain" }, { ".tar", "application/x-tar" },

{ ".tgz", "application/x-compressed" }, { ".txt", "text/plain" },

{ ".wav", "audio/x-wav" }, { ".wma", "audio/x-ms-wma" },

{ ".wmv", "audio/x-ms-wmv" },

{ ".wps", "application/vnd.ms-works" }, { ".xml", "text/plain" },

{ ".z", "application/x-compress" },

{ ".zip", "application/x-zip-compressed" }, { "", "*/*" } };

得到的productTpye 就是文件的后缀名。如.jpg

如果有这种结果的是最好

写下此文仅是让自己在开发中更加顺利,语音表达欠佳,请各位多多包涵,如果看不懂请留言,我会逐个回复的 :)

时间: 2024-10-10 07:05:34

android下载文件,文件包括视频以及各种文件的相关文章

java遍历给定目录,树形结构输出所有文件,包括子目录中的文件

import java.io.File; public class ReadDirectory { // 文件所在的层数 private int fileLevel; /** * 生成输出格式 * @param name 输出的文件名或目录名 * @param level 输出的文件名或者目录名所在的层次 * @return 输出的字符串 */ public String createPrintStr(String name, int level) { // 输出的前缀 String print

C++读取文件家中所有的文件或者是特定后缀的文件

由于经常有读取一个文件夹中的很多随机编号的文件,很多时候需要读取某些特定格式的所有文件. 下面的代码可以读取指定文件家中的所有文件和文件夹中格式为jpg的文件 参考:http://www.2cto.com/kf/201407/316515.html #include <io.h> #include <fstream> #include <string> #include <vector> using namespace std; ? ? //获取所有的文件名

Android 音视频深入 九 FFmpeg解码视频生成yuv文件(附源码下载)

项目地址,求star https://github.com/979451341/Audio-and-video-learning-materials/tree/master/FFmpeg(MP4%E8%BD%ACyuv%EF%BC%89 这一次是将MP4解码出yuv文件出来,先介绍一波yuv文件 YUV是指亮度参量和色度参量分开表示的像素格式,而这样分开的好处就是不但可以避免相互干扰,还可以降低色度的采样率而不会对图像质量影响太大.YUV是一个比较笼统地说法,针对它的具体排列方式,可以分为很多种

Android保存的文件显示到文件管理的最近文件和下载列表中

发现Android开发每搞一个和系统扯上关系的功能都要磨死人,对新手真不友好.运气不好难以快速精准的找到有效的资料?? 这篇记录的是Android中如何把我们往存储中写入的文件,如何显示到文件管理的下载列表.最近文件列表中. 假设保存的文件为外部存储中的File file,也许是app私有目录中的(未测试).也许是外部存储根目录中download.pictures等目录中的(没发现问题). 测试支持Android 4.0 - 9.0. 第一步,暴力扔给媒体扫描,管你是不是图片 如果我们的文件是图

如何扫描出Android系统媒体库中视频文件

Android系统启动时会去扫描系统文件,并将系统支持的视频文件(mp4,3gp,wmv)扫描到媒体库(MediaStore)中,下面代码演示如何获得这些文件的信息: publicstatic List<VideoInfo> sysVideoList = null;// 视频信息集合 sysVideoList = new ArrayList<VideoInfo>();   setVideoList(); privatevoid setVideoList() {   // Media

Android使用OKHttp库实现视频文件的上传到服务器

目录 1 服务器接口简介 2 Android端代码实现 2.1 xml布局文件 2.2 Activity类 2.3 Okhttp网络通信类 1 服务器接口简介 此处我使用的服务器接口是使用Flask编写,具体实现代码: # -*- coding: utf-8 -*- from flask import Flask, render_template, jsonify, request import time import os import base64 app = Flask(__name__)

基于Android 下载文件时,更新UI简单帮助类

由于在项目开发时,有这样的简单需求,问谷歌,网络上也有好多Utils工具类,但是比较冗余.自己就简单的写了一个简单帮助类. /** * 下载文件,更新UI简单帮助类 * * @author jarlen * */ public class DownLoadHelper { private static final int DOWN_BEGIN = 0; private static final int DOWN_UPDATA = 1; private static final int DOWN_

android apk 反编译 包括解密xml文件 资源文件 源代码

下载 apktool_2.0.1.jar (所有文件有打包 文章底部可下载) 下载地址:http://ibotpeaches.github.io/Apktool/ apktool.bat @echo off if "%PATH_BASE%" == "" set PATH_BASE=%PATH% set PATH=%CD%;%PATH_BASE%; java -jar -Duser.language=en "%~dp0\apktool.jar" %

android使用wcf接收上传图片视频文件

一.Android 权限配置文件: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.niewei.updatefile" android:versionCode="1" android:versio