barra de progreso de actualización en la barra de notificaciones
-
01-10-2019 - |
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.
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
Puede utilizar vistas personalizadas en la Notificación:
https://developer.android.com/guide/topics/ ui / notificadores / notifications.html # CustomExpandedView
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.