实现下载进度条
Implement download progress bar
下载文件时,会在通知或某处显示下载进度。
但我认为它在 cn1 应用程序中不是默认的。我想添加进度侦听器。如何让它发挥作用??
if (!FileSystemStorage.getInstance().exists(filename)) {
com.codename1.io.Util.downloadUrlToFile(PdfUrl, filename, true);
}
浏览器在本地下载文件的方式是浏览器的特例,与应用程序无关。您可以只调用 Display.execute
文件,浏览器将以这种方式下载它,尽管我猜它不是您想要的,因为事后您将无法访问它。
您可以使用 NetworkManager
的进度侦听器显示进度。在通知区域显示进度是 Android 的特定行为,在 iOS 上并不常见。但是您也许可以使用一些本地通知功能 https://www.codenameone.com/blog/local-notifications.html
在我的例子中使用了下面的代码。
/**
* Adaptation of Util.downloadUrlTo
*/
private boolean downloadUrlToAdapt(String url, final String fileName, boolean storage, final Slider slider) {
final ConnectionRequest cr = new ConnectionRequest();
cr.setPost(false);
cr.setFailSilently(true);
cr.setUrl(url);
if (storage) {
cr.setDestinationStorage(fileName);
} else {
cr.setDestinationFile(fileName);
}
NetworkManager.getInstance().addProgressListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (evt instanceof NetworkEvent) {
NetworkEvent e = (NetworkEvent) evt;
if (e.getProgressPercentage() >= 0) {
slider.setText(e.getProgressPercentage() + "%");
slider.setProgress(e.getProgressPercentage());
}
}
}
});
NetworkManager.getInstance().addToQueueAndWait(cr);
return cr.getResponseCode() == 200;
}
我需要显示视频下载进度。希望对你有帮助。
我使用它的方式与 Sadart Abukari 相同。
我唯一改变的是我使用 ToastBar.Status
来显示进度
[...]
NetworkManager.getInstance().addProgressListener((evt) -> {
if (evt instanceof NetworkEvent) {
NetworkEvent e = (NetworkEvent) evt;
if (e.getProgressPercentage() >= 0) {
status.setProgress(e.getProgressPercentage());
}
}
});
NetworkManager.getInstance().addToQueueAndWait(cr);
//Clear the ToastBar
status.clear();
return cr.getResponseCode() == 200;
}
下载文件时,会在通知或某处显示下载进度。 但我认为它在 cn1 应用程序中不是默认的。我想添加进度侦听器。如何让它发挥作用??
if (!FileSystemStorage.getInstance().exists(filename)) {
com.codename1.io.Util.downloadUrlToFile(PdfUrl, filename, true);
}
浏览器在本地下载文件的方式是浏览器的特例,与应用程序无关。您可以只调用 Display.execute
文件,浏览器将以这种方式下载它,尽管我猜它不是您想要的,因为事后您将无法访问它。
您可以使用 NetworkManager
的进度侦听器显示进度。在通知区域显示进度是 Android 的特定行为,在 iOS 上并不常见。但是您也许可以使用一些本地通知功能 https://www.codenameone.com/blog/local-notifications.html
在我的例子中使用了下面的代码。
/**
* Adaptation of Util.downloadUrlTo
*/
private boolean downloadUrlToAdapt(String url, final String fileName, boolean storage, final Slider slider) {
final ConnectionRequest cr = new ConnectionRequest();
cr.setPost(false);
cr.setFailSilently(true);
cr.setUrl(url);
if (storage) {
cr.setDestinationStorage(fileName);
} else {
cr.setDestinationFile(fileName);
}
NetworkManager.getInstance().addProgressListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
if (evt instanceof NetworkEvent) {
NetworkEvent e = (NetworkEvent) evt;
if (e.getProgressPercentage() >= 0) {
slider.setText(e.getProgressPercentage() + "%");
slider.setProgress(e.getProgressPercentage());
}
}
}
});
NetworkManager.getInstance().addToQueueAndWait(cr);
return cr.getResponseCode() == 200;
}
我需要显示视频下载进度。希望对你有帮助。
我使用它的方式与 Sadart Abukari 相同。
我唯一改变的是我使用 ToastBar.Status
来显示进度
[...]
NetworkManager.getInstance().addProgressListener((evt) -> {
if (evt instanceof NetworkEvent) {
NetworkEvent e = (NetworkEvent) evt;
if (e.getProgressPercentage() >= 0) {
status.setProgress(e.getProgressPercentage());
}
}
});
NetworkManager.getInstance().addToQueueAndWait(cr);
//Clear the ToastBar
status.clear();
return cr.getResponseCode() == 200;
}