2012-03-04 2 views
1

Я создал класс BackgroundService, который расширяет класс обслуживания.Уведомления о статусе Android

У меня есть таймер, который отслеживает продолжительность между проверками. В методе onCreate я устанавливаю его на 10 секунд, поэтому поведение, которое я ожидаю, заключается в том, что он отправляет уведомление о статусе каждые 10 секунд. Проблема, с которой я сталкиваюсь, заключается в том, что каждые 10 секунд я слышу уведомление о состоянии «звук», когда я его включал, но я не вижу текстового напоминания в верхней части экрана, которое появляется только в уведомлении службы уведомления. Кто-нибудь знает, как это исправить?

Я приложил много источников для этого класса ниже: Спасибо в Advance!

частный таймер таймера;

private TimerTask updateTask = new TimerTask() { 
    @Override 
    public void run() { 
     Log.i(TAG, "Timer task doing work!"); 

     // Process junk here: 
     sendNotification("Please leave in 5 min!!!"); 
    } 
}; 

@Override 
public IBinder onBind(Intent arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 

    return super.onStartCommand(intent, flags, startId); 
} 

@Override 
public void onCreate() { 
    // TODO Auto-generated method stub 
    super.onCreate(); 
    Log.i(TAG, "Background Service creating"); 

    timer = new Timer("DurationTimer"); 
    timer.schedule(updateTask, 1000L, 10*1000L); 
} 

public void sendNotification(CharSequence message) 
{ 
    // Execute Check and Notify 
    String ns = Context.NOTIFICATION_SERVICE; 
    NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns); 
    int icon = R.drawable.simon; 
    CharSequence tickerText = message; 
    long when = System.currentTimeMillis(); 
    Notification notification = new Notification(icon, tickerText, when); 
    Context context = getApplicationContext(); 
    CharSequence contentTitle = "LEAVE NOW!"; 
    CharSequence contentText = "LEAVE NOW!!"; 
    Intent notificationIntent = new Intent(this, BackgroundService.class); 
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 
    notification.defaults |= Notification.DEFAULT_SOUND; 
    //notification.defaults |= Notification.DEFAULT_VIBRATE; 

    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 
    int HELLO_ID = 1; 
    mNotificationManager.notify(HELLO_ID, notification); 
} 
+0

caan u скажите мне, где вы добавили принятый код? – user3233280

ответ

0

Измените значение contentText на каждую итерацию.

Пример:

CharSequence contentText = "LEAVE NOW!! " + System.currentTimeMillis(); 

Я думаю, вы увидите, что текст сообщения постоянно меняется, потому что у вас уже есть уведомление с тем же идентификатором Уведомления, который вы хотите отправить. Так что происходит, что текст просто изменяется.

Другой способ:

mNotificationManager.clear(HELLO_ID); 

Сделайте это, прежде чем создавать новые уведомления.

+0

Я попытался изменить значения contentText, contentTitle и HELLO_ID с помощью System.currentTimeMillis() отдельно, но это не решило проблему с текстом уведомления, который не отображается во второй раз. Знаете ли вы что-нибудь еще, что может вызвать это? Благодарю. – Garrett

+0

Новый раздел добавлен в тело ответа. – Knossos

+0

Я использовал mNotificationManager.cancel (HELLO_ID), который работал. Благодаря! – Garrett

Смежные вопросы