Текст строки состояния уведомления

Я хочу реализовать уведомление, которое показывает скорость интернета в строке состояния Android, также я хочу, чтобы это уведомление не удалялось пользователем, а удалялось только самим приложением.
Я просмотрел NotificationCompat.Builder Api, но не смог найти ни одного API для установка текста в строке состояния, который регулярно обновляется.
Я знаю, что можно реализовать эту функцию, но я не знаю, как ее реализовать.
Я нашел приложение, которое очень хорошо это реализует, оно называется internet speed meter lite.
Как вы знаете, эта функция не может быть реализована setSmallIcon из NotificationCompat.Builder.
Я помещаю изображения для лучшего понимания.
Скорость интернета в строке состояния Android:
Изображение 1
Скорость интернета в строке состояния Android![][1]
Изображение 2
введите здесь описание изображения
Уведомление, которое не может быть удалено пользователем:
Изображение 3
N  уведомление, которое не может быть удалено пользователем

Обновление:
Это мой код для уведомления, но он не действовал так, как я хочу.
Я использовал текст бегущей строки в своем уведомлении для отображения скорости пользователю, но он не действовал так, как я хочу. .

public class DownloadSpeedNotification {

private NotificationCompat.Builder mBuilder;
private Context mContext;
private static final int NOTIFICATION_ID = 2;

public DownloadSpeedNotification(Context context) {
    mContext = context;
    mBuilder = new NotificationCompat.Builder(context)
            .setSmallIcon(R.drawable.notification_icon).
                    setContentText("Download meter content text").
                    setContentTitle("Download meter content title");

    Intent intent = new Intent(context, MainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent,
            PendingIntent.FLAG_UPDATE_CURRENT);
    mBuilder.setContentIntent(pendingIntent);
}

public void alert() {
    // Gets an instance of the NotificationManager service
    NotificationManager mNotifyMgr =
            (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
    // Builds the notification and issues it.
    mNotifyMgr.notify(NOTIFICATION_ID, mBuilder.build());
}

public void setSpeed(String speed) {
    mBuilder.setTicker(speed);
}
}

И это код, который использует вышеприведенный класс для уведомления пользователя:

downloadSpeedNotification.setSpeed(Formatter.humanReadableByteCount(rx, true));
        downloadSpeedNotification.alert();

Код выше вызывается каждую 1 секунду.


person taher    schedule 20.04.2015    source источник


Ответы (2)


Попробуй это..

String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) context
            .getSystemService(ns);
long when = System.currentTimeMillis();

Notification notification = new Notification("your icon", "your ticker text", when);
/*<set your intents here>*/
mNotificationManager.notify(notificationID, notification);

Замените notificationID целым числом. Пока вы отправляете новое уведомление с тем же notificationID, оно заменяет старое.

person Lal    schedule 20.04.2015
comment
Я имею в виду текст строки состояния уведомления, как показано на изображениях, прикрепленных к вопросу, а не текст уведомления. Другими словами, я хочу показать текст вместо значка уведомления в строке состояния. Этот текст будет показывать скорость интернета. Пожалуйста, посмотрите на изображение 1 и 2 в вопросе. - person taher; 20.04.2015
comment
Также я должен сказать, что я проверил текст тикера в своем уведомлении, но он не работал так, как я хотел. - person taher; 20.04.2015

Вы пробовали работать с NotificationManager? http://developer.android.com/reference/android/app/NotificationManager.html

Есть метод notify, его можно вызывать каждый раз когда нужно например от сервиса, который будет искать ваше подключение и подскажет как его изменить.

EDIT 1 Google даже дает хороший пример, как работать с диспетчером уведомлений http://developer.android.com/training/notify-user/managing.html

person k.nadonenko    schedule 20.04.2015
comment
Я имею в виду текст строки состояния уведомления, как показано на изображениях, прикрепленных к вопросу, а не текст уведомления. Другими словами, я хочу показать текст вместо значка уведомления в строке состояния. Этот текст будет показывать скорость интернета. Пожалуйста, посмотрите на изображение 1 и 2 в вопросе. - person taher; 20.04.2015
comment
@taher, может быть, это поможет? stackoverflow.com/ вопросы/19610598/ - person k.nadonenko; 21.04.2015