android上传进度条
Ⅰ 如何实现在Android文件上传进度条
实现在android实现带进度条的上传效果效果如图: 用到以下两个类就可实现带进度条的文件上传: 1、CustomMultiPartEntity extends MultipartEntity, 2、HttpMultipartPost extends AsyncTask 代码如下: import java/UploadImage.php"); try{ = newCustomMultipartEntity( newProgressListener() { @Override public void transferred(longnum){ publishProgress((int) ((num / (float) totalSize) * 100)); } }); // We use FileBody to transfer an image multipartContent.addPart("uploaded_file", newFileBody( newFile(m_userSelectedImagePath))); totalSize= multipartContent.getContentLength(); // Send it httpPost.setEntity(multipartContent); HttpResponseresponse = httpClient.execute(httpPost, httpContext); String serverResponse = EntityUtils.toString(response.getEntity()); ResponseFactoryrp = newResponseFactory(serverResponse); return(TypeImage) rp.getData(); } catch(Exception e) { System.out.println(e); } returnnull; } @Override protectedvoidonProgressUpdate(Integer... progress){ pd.setProgress((int) (progress[0])); } @Override protectedvoidonPostExecute(TypeUploadImageui) { pd.dismiss(); } } 在 transferred()函数中调用publishProgress((int) ((num / (float) totalSize) * 100)); 在onProgressUpdate()实现上传进度的更新操作
Ⅱ 用QQ空间客户端(Android版)上传视频完成进度条后卡住,是什么原因
流输入异常,具体原因咨询腾讯客服
Ⅲ android中progressbar进度条有哪些
一、进度条的定义。
进度条即计算机在处理任务时,实时的,以图片形式显示处理任务的速度,完成度,剩余未完成任务量的大小,和可能需要处理时间,一般以长方形条状显示。
二、进度条的由来。
在数字运算机发明之前,就已经有了进度条的概念。1896 年,Karol Adamiecki(波兰人;经济学家,工程师和管理研究人员),发明了一种叫做harmonogram(波兰语,时间表)的图表;1903年,他的理论在俄罗斯技术界引起了轰动。他在波兰杂志《 Przegląd Techniczny 》发表了一些文章(1909)。 1931年,他发表了一篇更广为人知的文章《armonogram or harmonograf.》(波兰语,日程或时间表),描述他的图。Adamiecki只是在波兰和俄罗斯发表这些文章,较少被英语国家了解。
同一时间,亨利·甘特(Henry Gantt)提出类似的方法已在西方普及,他在1910年和1915年都发表过文章。算是以讹传讹吧,Adamiecki的图表就被叫做为甘特图。这个概念后来被用于计算领域。
三、进度条的应用。
以文件处理为例:
单个文件的进度处理方法:
使用CopyFileEx进行文件复制,这个函数专门提供了一个回调函数用来处理进度条,详细参见MSDN。
总体进度的处理方法:
如果一批文件,首先获得文件的数量count = 文件数量
设置进条的范围为0至count,每完成一个文件,就向前进一步。
Ⅳ Android中如何实现带进度的文件上传Http可以实现吗
可使用android自带的httpclient框架实现,附件中已经现成的示例代码,带上传进度。
1. GET 方式传递参数
//先将参数放入List,再对参数进行URL编码
List<BasicNameValuePair> params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "数据")); //增加参数1
params.add(new BasicNameValuePair("param2", "value2"));//增加参数2
String param = URLEncodedUtils.format(params, "UTF-8");//对参数编码
String baseUrl = "服务器接口完整URL";
HttpGet getMethod = new HttpGet(baseUrl + "?" + param);//将URL与参数拼接
HttpClient httpClient = new DefaultHttpClient();
try {
HttpResponse response = httpClient.execute(getMethod); //发起GET请求
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8"));//获取服务器响应内容
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
2.POST方式 方式传递参数
//和GET方式一样,先将参数放入List
params = new LinkedList<BasicNameValuePair>();
params.add(new BasicNameValuePair("param1", "Post方法"));//增加参数1
params.add(new BasicNameValuePair("param2", "第二个参数"));//增加参数2
try {
HttpPost postMethod = new HttpPost(baseUrl);//创建一个post请求
postMethod.setEntity(new UrlEncodedFormEntity(params, "utf-8")); //将参数填入POST Entity中
HttpResponse response = httpClient.execute(postMethod); //执行POST方法
Log.i(TAG, "resCode = " + response.getStatusLine().getStatusCode()); //获取响应码
Log.i(TAG, "result = " + EntityUtils.toString(response.getEntity(), "utf-8")); //获取响应内容
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Ⅳ android 进度条
顶部放一个ProgressBar或者ImageView,进入的时候开始转圈,转完了就隐藏起来,view.setVisibility(View.INVISIBLE);再把其他界面显示出来就好了,view.setVisibility(View.VISIBLE);
Ⅵ 上传文件与设置进度条
1、引入bootstrap.css和jquery.js;
2、点击按钮后获取文件列表,添加到FormData,调用open函数指定类型与URL地址,在发起请求send();
3、监听onreadystatechange事件,当服务器回应后,把传回来的数据转换成JSON字符串,修改img的URL地址,让图片文件显示在页面中;
4、创建xhr对象开启监听文件上传进度,e.lengthComputable是true则计算进度条百分比,把结果给进度条;
5、进度条完成后,修改颜色,移除类添加类
HTML
JS
Ⅶ 怎样实现在android实现带进度条的上传效果
实现在android实现带进度条的上传效果效果如图:用到以下两个类就可实现带进度条的文件上传:
1、CustomMultiPartEntity extends MultipartEntity,
2、HttpMultipartPost extends AsyncTask
代码如下:
import java.io.FilterOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.Charset;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
public class CustomMultipartEntity extends MultipartEntity {
private final ProgressListener listener;
public CustomMultipartEntity(final ProgressListener listener) {
super();
this.listener = listener;
}
public CustomMultipartEntity(final HttpMultipartMode mode, final ProgressListener listener) {
super(mode);
this.listener = listener;
}
public CustomMultipartEntity(HttpMultipartMode mode, final String boundary,
final Charset charset, final ProgressListener listener) {
super(mode, boundary, charset);
this.listener = listener;
}
@Override
public void writeTo(final OutputStream outstream) throws IOException {
super.writeTo(new CountingOutputStream(outstream, this.listener));
}
public static interface ProgressListener {
void transferred(long num);
}
public static class CountingOutputStream extends FilterOutputStream {
private final ProgressListener listener;
private long transferred;
public CountingOutputStream(final OutputStream out, final ProgressListener listener) {
super(out);
this.listener = listener;
this.transferred = 0;
}
public void write(byte[] b, int off, int len) throws IOException {
out.write(b, off, len);
this.transferred += len;
this.listener.transferred(this.transferred);
}
public void write(int b) throws IOException {
out.write(b);
this.transferred++;
this.listener.transferred(this.transferred);
}
}
}
该类计算写入的字节数,我们需要在实现ProgressListener中的trasnfered()方法,更行进度条
public class HttpMultipartPost extends AsyncTask<HttpResponse, Integer, TypeUploadImage> {
ProgressDialogpd;
longtotalSize;
@Override
protectedvoidonPreExecute(){
pd= newProgressDialog(this);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setMessage("Uploading Picture...");
pd.setCancelable(false);
pd.show();
}
@Override
(HttpResponse... arg0) {
HttpClienthttpClient = newDefaultHttpClient();
HttpContexthttpContext = newBasicHttpContext();
HttpPosthttpPost = newHttpPost("http://herpderp.com/UploadImage.php");
try{
= newCustomMultipartEntity(
newProgressListener() {
@Override
public void transferred(longnum){
publishProgress((int) ((num / (float) totalSize) * 100));
}
});
// We use FileBody to transfer an image
multipartContent.addPart("uploaded_file", newFileBody(
newFile(m_userSelectedImagePath)));
totalSize= multipartContent.getContentLength();
// Send it
httpPost.setEntity(multipartContent);
HttpResponseresponse = httpClient.execute(httpPost, httpContext);
String serverResponse = EntityUtils.toString(response.getEntity());
ResponseFactoryrp = newResponseFactory(serverResponse);
return(TypeImage) rp.getData();
}
catch(Exception e) {
System.out.println(e);
}
returnnull;
}
@Override
protectedvoidonProgressUpdate(Integer... progress){
pd.setProgress((int) (progress[0]));
}
@Override
protectedvoidonPostExecute(TypeUploadImageui) {
pd.dismiss();
}
}
在 transferred()函数中调用publishProgress((int) ((num / (float) totalSize) * 100));
在onProgressUpdate()实现上传进度的更新操作
Ⅷ android 绘制进度条
进度条一般是用来显示耗时操作的,如你图示,最终完成的时候刚好绕一圈,是一个计时器来确定进度条跑完一圈的时间,然后按时间的流逝来绘制进度条(也就是边框)。
我的思路是这样的,首先确定进度条的起始位置,也就是黑色背景图的上部中间(前提是获取到背景图片四个角角位置坐标(X,Y)),计算出图片的长宽,这样背景图片四个角的坐标都有了,进度条的起始坐标也有了,然后根据周长和定时器的时间确定我们每毫秒需要绘制多长,遇到拐角的时候判断一下进度条的实时坐标与背景图的拐角坐标是否一致,然后就拐个弯,继续绘制。
这是个思路,我过会儿调试一下
Ⅸ android 实现Service上传并在通知栏显示进度条
手上项目需要实现选择多个视频后在上传腾讯云,由于视频较大大,所以选择Service来进行上传任务,配合Notification显示进度。
打开server直接发送一个Notification并拿到RemoteViews ;
这里要兼容下8.0设置好渠道id;
下面开始上传
最后效果如图,layout可以自己定义
如果无法显示通知那应该安装时默认设置了关闭通知,需要进入通知管理打开