我正在开发一个使用nojs作为服务器的应用程序,它的主要功能是将图像,视频和笔记上传到服务器。
当用户限制带宽或没有互联网连接时,我想要注意这种情况,所以我希望我的应用程序中的所有文件更改为待定状态,等待util用户恢复互联网连接。
这是我在AsyncTask类上传中的代码
File file = new File(imgPath);
//Create the POST object
HttpPost post = new HttpPost(url);
MultipartEntity entity = new MyMultipartEntity(new ProgressListener()
{
@Override
public void transferred(long num)
{
//Call the onProgressUpdate method with the percent completed
publishProgress((int) ((num / (float) totalSize) * 100));
Log.d("DEBUG", num + " - " + totalSize);
}
});
//Add the file to the content's body
ContentBody cbFile = new FileBody( file, "video/mp4" );
entity.addPart("source", cbFile);
//After adding everything we get the content's lenght
totalSize = entity.getContentLength();
//We add the entity to the post request
post.setEntity(entity);
//Execute post request
HttpResponse response = client.execute( post );
int statusCode = response.getStatusLine().getStatusCode();
if(statusCode == HttpStatus.SC_OK){
//If everything goes ok, we can get the response
String fullRes = EntityUtils.toString(response.getEntity());
Log.d("DEBUG", fullRes);
} else {
Log.d("DEBUG", "HTTP Fail, Response Code: " + statusCode);
}
解决这个问题的任何想法?
答案 0 :(得分:0)
您需要实现在设备上连接发生变化时调用的广播接收器。
当您收到消息时,您可以检查是否有任何待处理的上传并继续(您需要实现此逻辑)。
您的广播接收器需要处理android.net.conn.CONNECTIVITY_CHANGE
。如何做到这一点是关于SO的好文档,或者一个好的起点是The Android Connectivity Manager