Pregunta

Me gustaría poner una barra de progreso en la barra de notificaciones. La idea está mostrando la barra de progreso mientras que el programa carga un archivo a un servidor. Todo lo demás está bien, pero no puedo encontrar la manera de actualizar la barra de progreso dentro de la notificación. ¿Alguien sabe cualquier patrón a jugar? Es decir, cuando debería actualizar la barra de progreso, en un servicio o actividad y por lo tanto.

¿Fue útil?

Solución

No sé lo que su apariencia código como, por lo que no sé lo que hay que modificar, buti hizo algunas búsquedas a través de la documentación. He encontrado algunas cosas en Notificaciones , ProgressBars , y RemoteViews .

En concreto, en RemoveView, puede actualizar la barra de progreso. Así que la combinación de algunos de los ejemplos de código en cada enlace, me sale algo como esto:

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

Otros consejos

Para eliminar un ProgressBar del RemoteView utilizar el código siguiente: -

 remoteViews.setViewVisibility(R.id.progressBar, View.INVISIBLE);

También puede utilizar View.GONE sino que hará que el androide para llenar el espacio vacío.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top