Friday, April 27, 2012

Refresh progress bar in notification bar


I would like to put a progress bar in the notification bar. The idea is showing the progress bar while the program uploads a file to a server. Everything else is ok, but I can not figure out how to refresh the progress bar inside the notification. Does anybody knows any pattern to play with? I mean, where I should refresh the progress bar, in a service or activity and so.



Thanks in advance.


Source: Tips4all

3 comments:

  1. I don't know what your code looks like, so I don't know what you need to modify, butI did some searching through the documentation. I found some stuff on Notifications, ProgressBars, and RemoteViews.

    Specifically, in RemoveView, you can update the Progress bar. So combining some of the example code in each link, I get something like this:

    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();
    }
    }

    ReplyDelete
  2. Here is a great blog post about creating a progress bar in the notification status bar using this layout.

    The only thing missing is using notification text styles. You can look here for answers to this issue.

    ReplyDelete
  3. You can use custom views in Notification, http://developer.android.com/intl/fr/guide/topics/ui/notifiers/notifications.html#CustomExpandedView

    ReplyDelete