2011-10-09 22 views
7

El proyecto en el que estoy trabajando tiene dos aplicaciones diferentes, 1 es servidor y el otro es cliente. La aplicación del servidor tiene 1 clase de servicio, que inicia el hilo del servidor en la función onStartCommand(). La clase para el hilo del servidor se define en la propia clase de servicio. Cada vez que el servidor recibe datos del cliente, los almacena en la base de datos. El problema es que quiero notificar al usuario que se han recibido nuevos datos a través de una notificación o un mensaje de bienvenida, lo que sea posible. También dígame dónde debo escribir el código para la notificación, si debo escribir en clase de servicio o clase de subproceso o clase firstActivity desde la que estoy comenzando el servicio del servidor. Gracias.¿Cómo mostrar notificaciones desde el servicio en segundo plano?

+1

posible duplicado de [envío de una notificación de un servicio en Android] (http://stackoverflow.com/questions/1207269/sending-a-notification-from-a-service-in-android) – Reno

+0

@ Reno: Ya mencioné esta publicación, pero no entendí dónde debería colocar ese código, también ese código está incompleto. Soy principiante en Android. – sagar

Respuesta

3

Estoy leyendo esta manera incorrecta? ¿Tanto su aplicación de servidor como su aplicación de cliente están ambas en el mismo dispositivo Android?

En cualquier caso, echar un vistazo a las ApiDemos de código para las notificaciones a través de un servicio.

Y como es probable que tenga que tratar con un servidor remoto (y no uno local) y todos los problemas de latencia asociados con la red, creo que es mejor que ajuste su servicio en una AsyncTask.

también aprender sobre los receptores de radiodifusión, registraron los receptores de radiodifusión puede ser gran manera de desencadenar Servicios/Actividades sin la necesidad de tener su propio sondeo de servicio en un bucle indefinidamente.

+0

¡Gracias! mi aplicación de servidor y cliente se ejecuta en diferentes emuladores, no hay ningún problema en la transferencia de datos y el almacenamiento en la base de datos. Veré los receptores de transmisión. ¿Hay alguna manera de detectar que hay un cambio en la tabla de la base de datos? De modo que si se encuentran cambios, puedo notificar al usuario de la clase de actividad. – sagar

+0

Como dijo, he usado broadcast reciever, y está funcionando, pero quiero enviar 1 cadena con difusión y mostrar esa cadena en el mensaje de brindis. He usado intent.putextra(). pero en el extremo receptor recibo un valor nulo, creo que el problema está en mi código extra, ¿puede decirme cómo recibir el envío de datos por intento de transmisión? – sagar

9

En primer lugar usted necesita leer este artículo sobre cómo utilizar Notifications.

Siguiente utilizarlo para enviar una notificación, puede escribir este código en la clase de servicio en el punto por el que recibe algunos datos desde el cliente.

NotificationManager notificationManager = 
    (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
int icon = R.drawable.notification_icon; 
CharSequence notiText = "Your notification from the service"; 
long meow = System.currentTimeMillis(); 

Notification notification = new Notification(icon, notiText, meow); 

Context context = getApplicationContext(); 
CharSequence contentTitle = "Your notification"; 
CharSequence contentText = "Some data has arrived!"; 
Intent notificationIntent = new Intent(this, YourActivityThatYouWantToLaunch.class); 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 

notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 

int SERVER_DATA_RECEIVED = 1; 
notificationManager.notify(SERVER_DATA_RECEIVED, notification); 
Cuestiones relacionadas