视频上传占用了 android 中的所有带宽
Video upload eats up all the bandwidth in android
我可以在 android 中上传视频。为此,我将整个代码放在一个服务中,并在其中使用 AsyncTask 调用 doInBackground() 中的上传视频功能。下面是上传视频的代码:
private String uploadFile(String filePath, String proid, String procat) {
String responseString = null;
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(Const_Url.FILE_UPLOAD_URL);
try {
AndroidMultiPartEntity entity = new AndroidMultiPartEntity(
new ProgressListener() {
@Override
public void transferred(long num) {
publishProgress((int) ((num / (float) totalSize) * 100));
}
});
File sourceFile = new File(filePath);
// Adding file data to http body
entity.addPart("image", new FileBody(sourceFile));
entity.addPart("project_id", new StringBody(proid));
entity.addPart("user_id", new StringBody(userid));
entity.addPart("video_type", new StringBody("in_store"));
Log.d("background file path ", filePath);
Log.d("background project id", proid);
Log.d("background project cat", procat);
Log.d("background user id", userid);
totalSize = entity.getContentLength();
httppost.setEntity(entity);
// Making server call
HttpResponse response = httpclient.execute(httppost);
HttpEntity r_entity = response.getEntity();
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 200) {
// Server response
responseString = EntityUtils.toString(r_entity);
} else {
responseString = "Error occurred! Http Status Code: "
+ statusCode;
}
} catch (ClientProtocolException e) {
responseString = e.toString();
} catch (IOException e) {
responseString = e.toString();
}
return responseString;
}
因此 AndroidMultiPartEntity 上传整个视频。
但问题是,如果在这期间我尝试对服务器进行 HTTP 调用,那么它只会等到视频上传完成 ()。
最好不要等到那个时候,而是尽快回复我。我认为视频上传服务会占用整个带宽,因此不会进行其他 HTTP 调用。
请提出一些解决方案。 TIA.
P.S。我试过了
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
降低该 AsyncTask 的优先级并提高其他 http 调用 (Asynctask) 的优先级。但徒劳无功
对于遇到这个问题的每个人,我都有解决方案。如果你想在服务的帮助下在后台上传一个非常大的文件(~500mb),请使用这个库:
android upload service
我发现这非常容易集成,它还提供了许多附加功能,例如在通知栏中显示 进度条
我可以在 android 中上传视频。为此,我将整个代码放在一个服务中,并在其中使用 AsyncTask 调用 doInBackground() 中的上传视频功能。下面是上传视频的代码:
private String uploadFile(String filePath, String proid, String procat) {
String responseString = null;
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(Const_Url.FILE_UPLOAD_URL);
try {
AndroidMultiPartEntity entity = new AndroidMultiPartEntity(
new ProgressListener() {
@Override
public void transferred(long num) {
publishProgress((int) ((num / (float) totalSize) * 100));
}
});
File sourceFile = new File(filePath);
// Adding file data to http body
entity.addPart("image", new FileBody(sourceFile));
entity.addPart("project_id", new StringBody(proid));
entity.addPart("user_id", new StringBody(userid));
entity.addPart("video_type", new StringBody("in_store"));
Log.d("background file path ", filePath);
Log.d("background project id", proid);
Log.d("background project cat", procat);
Log.d("background user id", userid);
totalSize = entity.getContentLength();
httppost.setEntity(entity);
// Making server call
HttpResponse response = httpclient.execute(httppost);
HttpEntity r_entity = response.getEntity();
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 200) {
// Server response
responseString = EntityUtils.toString(r_entity);
} else {
responseString = "Error occurred! Http Status Code: "
+ statusCode;
}
} catch (ClientProtocolException e) {
responseString = e.toString();
} catch (IOException e) {
responseString = e.toString();
}
return responseString;
}
因此 AndroidMultiPartEntity 上传整个视频。
但问题是,如果在这期间我尝试对服务器进行 HTTP 调用,那么它只会等到视频上传完成 ()。
最好不要等到那个时候,而是尽快回复我。我认为视频上传服务会占用整个带宽,因此不会进行其他 HTTP 调用。
请提出一些解决方案。 TIA.
P.S。我试过了
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
降低该 AsyncTask 的优先级并提高其他 http 调用 (Asynctask) 的优先级。但徒劳无功
对于遇到这个问题的每个人,我都有解决方案。如果你想在服务的帮助下在后台上传一个非常大的文件(~500mb),请使用这个库: android upload service
我发现这非常容易集成,它还提供了许多附加功能,例如在通知栏中显示 进度条