Saeed Hashemi
Saeed Hashemi

Reputation: 1024

show loading activity progress bar in notification area

I want to put a progress bar in notification area ,when user switch to another activity ;in loading time show progress percent and value in notification area.

how can I do this ?

Upvotes: 2

Views: 1983

Answers (2)

user1167782
user1167782

Reputation:

To show notification:

NotificationManager notificationManager = (NotificationManager) mContext
            .getSystemService(NOTIFICATION_SERVICE);


        Notification updateComplete = new Notification();
        updateComplete.icon = android.R.drawable.stat_notify_sync;
        updateComplete.tickerText = mContext
            .getText(R.string.app_name);
        updateComplete.when = System.currentTimeMillis();

        Intent notificationIntent = new Intent(mContext,
                MainActivity.class);
            PendingIntent contentIntent = PendingIntent.getActivity(mContext, 0,
                notificationIntent, 0);

            String contentTitle = mContext.getText(R.string.app_name)
                    .toString();
                String contentText;

                    contentText = mContext.getText(
                        R.string.yes).toString();

                updateComplete.setLatestEventInfo(mContext, contentTitle,
                    contentText, contentIntent);

                notificationManager.notify(progressBarStatus, updateComplete);

for more information:

http://mobile.tutsplus.com/tutorials/android/android-fundamentals-status-bar-notifications/

Upvotes: 1

Bhavik Ambani
Bhavik Ambani

Reputation: 6657

You can do it by the following way The key to use progress bar is using “Thread” to run your time consume task and another “Thread” to update the progress bar status accordingly. Read the code’s comment, it should be self-explanatory.

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;

public class MyAndroidAppActivity extends Activity {

    Button btnStartProgress;
    ProgressDialog progressBar;
    private int progressBarStatus = 0;
    private Handler progressBarHandler = new Handler();

    private long fileSize = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        addListenerOnButton();

    }

    public void addListenerOnButton() {

        btnStartProgress = (Button) findViewById(R.id.btnStartProgress);
        btnStartProgress.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                // prepare for a progress bar dialog
                progressBar = new ProgressDialog(v.getContext());
                progressBar.setCancelable(true);
                progressBar.setMessage("File downloading ...");
                progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                progressBar.setProgress(0);
                progressBar.setMax(100);
                progressBar.show();

                // reset progress bar status
                progressBarStatus = 0;

                // reset filesize
                fileSize = 0;

                new Thread(new Runnable() {
                    public void run() {
                        while (progressBarStatus < 100) {

                            // process some tasks
                            progressBarStatus = doSomeTasks();

                            // your computer is too fast, sleep 1 second
                            try {
                                Thread.sleep(1000);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }

                            // Update the progress bar
                            progressBarHandler.post(new Runnable() {
                                public void run() {
                                    progressBar.setProgress(progressBarStatus);
                                }
                            });
                        }

                        // ok, file is downloaded,
                        if (progressBarStatus >= 100) {

                            // sleep 2 seconds, so that you can see the 100%
                            try {
                                Thread.sleep(2000);
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }

                            // close the progress bar dialog
                            progressBar.dismiss();
                        }
                    }
                }).start();

            }

        });

    }

    // file download simulator... a really simple
    public int doSomeTasks() {

        while (fileSize <= 1000000) {

            fileSize++;

            if (fileSize == 100000) {
                return 10;
            } else if (fileSize == 200000) {
                return 20;
            } else if (fileSize == 300000) {
                return 30;
            }
            // ...add your own

        }

        return 100;

    }

}

Open “layout/main.xml” file, just add normal button for demonstration.

<Button
    android:id="@+id/btnStartProgress"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Download File" />

Upvotes: 2

Related Questions