Обновить индикатор выполнения в панели уведомлений
Я хотел бы поместить индикатор выполнения в панель уведомлений. Идея состоит в том, чтобы показать индикатор выполнения, пока программа загружает файл на сервер. Все остальное в порядке, но я не могу понять, как обновить индикатор выполнения внутри уведомления. Кто-нибудь знает какой-нибудь шаблон для игры? Я имею в виду, где я должен обновить индикатор выполнения, в сервисе или деятельности и так далее.
3 ответа
Я не знаю, как выглядит ваш код, поэтому я не знаю, что вам нужно изменить, но я провел поиск по документации. Я нашел кое-что о уведомлениях, ProgressBars и RemoteViews.
В частности, в RemoveView вы можете обновить индикатор выполнения. Объединяя некоторые примеры кода в каждой ссылке, я получаю что-то вроде этого:
public class MyActivity extends Activity {
private static final int PROGRESS = 0x1;
private static final int MAX_PROGRESS = 100;
private int mProgressStatus = 0;
private Handler mHandler = new Handler();
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
//define Notification
//...
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification_layout);
contentView.setProgressBar(R.id.progress_bar, MAX_PROGRESS, mProgressStatus, false);
notification.contentView = contentView;
// Start file upload in a background thread
new Thread(new Runnable() {
public void run() {
while (mProgressStatus < MAX_PROGRESS) {
mProgressStatus = doWork();
// Update the progress bar
mHandler.post(new Runnable() {
public void run() {
contentView.setProgressBar(R.id.progress_bar, MAX_PROGRESS, mProgressStatus, false);
}
});
}
}
}).start();
}
}
Вы можете использовать пользовательские представления в уведомлении:
https://developer.android.com/guide/topics/ui/notifiers/notifications.html
Чтобы удалить ProgressBar из RemoteView, используйте следующий код:-
remoteViews.setViewVisibility(R.id.progressBar, View.INVISIBLE);
Вы также можете использовать View.GONE
но это сделает Android заполнить пустое пространство.