Как включить вибрацию и подсветку с помощью уведомлений Android api?

17

Я создал приложение, которое создает уведомления, используя следующий код:

// notification
Notification notification = new Notification(R.drawable.notification_icon, title, System.currentTimeMillis());
notification.flags |= Notification.FLAG_AUTO_CANCEL;

// parameters
String ringtone = prefs.getString(context.getString(R.string.key_notifications_ringtone), "");
if (ringtone.length() > 0) {
    notification.sound = Uri.parse(ringtone);
    notification.audioStreamType = AudioManager.STREAM_NOTIFICATION;
}

boolean useVibrator = prefs.getBoolean(context.getString(R.string.key_notifications_use_vibrator), false);
if (useVibrator) {
    notification.defaults |= Notification.DEFAULT_VIBRATE;
}

boolean useLed = prefs.getBoolean(context.getString(R.string.key_notifications_use_led), false);
if (useLed) {
    notification.defaults |= Notification.DEFAULT_LIGHTS;
    notification.flags |= Notification.FLAG_SHOW_LIGHTS;
}

// alert
RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.notification);
contentView.setImageViewResource(R.id.notification_icon, R.drawable.icon);
contentView.setTextViewText(R.id.notification_title, title);
contentView.setTextViewText(R.id.notification_text, text);
notification.contentView = contentView;

Intent notificationIntent = new Intent(context, MyActivity.class);

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
notification.contentIntent = contentIntent;

notificationManager.notify(1, notification);

Уведомление работает, и используется правильный рингтон.

Однако, несмотря на то, что настройки корректно активированы и флаги уведомлений установлены правильно (я проверял путем отладки), уведомление никогда не вибрирует и никогда не приводит к активации фары.

Я бы обвинил настройки своего телефона, но все другие приложения, использующие уведомления, такие как обмен сообщениями, gmail и другие, правильно используют все эти функции.

Кто-нибудь знает, что я сделал не так? (мой телефон HTC Hero с Android 2.1)

    
задан SirDarius 21.07.2010 в 11:24
источник
  • У вас есть разрешение Вибрации? –  Sephy 21.07.2010 в 12:06
  • Я проверил ваш код на своем Nexus One, с разрешения, и я действительно получаю вибрацию, но не возглавил ... все еще копаю –  Sephy 21.07.2010 в 12:28
  • то же самое, я пропустил разрешение на вибрацию, и теперь эта часть работает. –  SirDarius 21.07.2010 в 12:36
  • @SirDarius: Огни не работают даже для меня. Вы получили решение для этого? –  Ashwin 31.08.2012 в 09:04
  • Ну, как я сказал в комментарии, он начал работать после установки разрешений из принятого ответа. –  SirDarius 31.08.2012 в 11:13

2 ответа

28

Добавить разрешение в файл манифеста

<uses-permission android:name="android.permission.VIBRATE"></uses-permission>

ИЗМЕНИТЬ

Для Lights попробуйте добавить их явно, подсветка по умолчанию может быть настроена на ноль

notification.flags |= Notification.FLAG_SHOW_LIGHTS;
notification.ledARGB = 0xff00ff00;
notification.ledOnMS = 300;
notification.ledOffMS = 1000;
    
ответ дан Pentium10 21.07.2010 в 12:05
источник
  • Я тоже так предположил, но после небольшого размышления это не может быть. Когда у вас нет разрешения, приложение вылетает, не так ли? поэтому он не видел бы, чтобы остальные работали –  Sephy 21.07.2010 в 12:23
  • , это то, о чем я думал, и отсутствующее разрешение должно было вызвать исключение. –  SirDarius 21.07.2010 в 12:31
  • , чтобы завершить мой предыдущий комментарий, добавив недостающее разрешение, сделал трюк, однако все еще нет огней, и я не нашел конкретного разрешения для этой цели –  SirDarius 21.07.2010 в 12:38
  • Я тоже пробовал это на связке, и, похоже, это не работает ... это странно ... –  Sephy 21.07.2010 в 12:54
  • Я использую Nexus 5, и огни не появляются. Что ты сделал? Кто угодно? –  Kala J 18.10.2014 в 03:07
Показать остальные комментарии
14

В дополнение к ответу Pentium10:

Поставьте устройство в спящий режим, и свет погаснет! ;)

    
ответ дан OneWorld 09.12.2010 в 14:17
источник
  • Здравствуйте, OneWorld попробуйте приведенный выше код и поместите этот код также note.defaults | = Notification.DEFAULT_SOUND; note.defaults | = Notification.DEFAULT_VIBRATE; благодаря этому вибрация и звук работают, но свет не работает, даже если я включу устройство во сне, и свет погаснет. –  Yog Guru 17.10.2011 в 11:26
  • Для тех, кто сталкивается с этим в будущем, убедитесь, что телефон выключен, как сказал OneWorld. Также убедитесь, что лоток уведомлений уже не был вынут (т. Е. Пользователь не просмотрел это уведомление). В этом случае светодиод будет мигать. –  ashishduh 06.02.2014 в 20:12