Как воспроизвести звук уведомления об андроиде

Мне было интересно, как я могу воспроизводить звук уведомления, не проигрывая его по медиа-streamу. Прямо сейчас я могу сделать это через медиаплеер, однако я не хочу, чтобы он играл в качестве медиафайла, я хочу, чтобы он играл как уведомление или оповещение или мелодию звонка. Вот пример того, как выглядит мой код прямо сейчас:

MediaPlayer mp = new MediaPlayer(); mp.reset(); mp.setDataSource(notificationsPath+ (String) apptSounds.getSelectedItem()); mp.prepare(); mp.start(); 

Если кто-то все еще ищет решение этого, я нашел ответ на вопрос о том, как воспроизводить мелодию звонка / сигнала тревоги в Android

 try { Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification); r.play(); } catch (Exception e) { e.printStackTrace(); } 

Вы можете изменить TYPE_NOTIFICATION на TYPE_ALARM, но вы хотите отслеживать свой Ringtone r, чтобы прекратить играть … скажем, когда пользователь нажимает кнопку или что-то в этом роде.

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

 //Define Notification Manager NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); //Define sound URI Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getApplicationContext()) .setSmallIcon(icon) .setContentTitle(title) .setContentText(message) .setSound(soundUri); //This sets the sound to play //Display notification notificationManager.notify(0, mBuilder.build()); 

Если вы хотите, чтобы звук уведомления по умолчанию воспроизводился, вы можете использовать метод setDefaults (int) classа NotificationCompat.Builder :

 NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ic_notification) .setContentTitle(getString(R.string.app_name)) .setContentText(someText) .setDefaults(Notification.DEFAULT_SOUND) .setAutoCancel(true); 

Я считаю, что это самый простой способ выполнить вашу задачу.

Прошло некоторое время с вашего вопроса, но … Вы пытались установить тип аудиоstreamа?

 mp.setAudioStreamType(AudioManager.STREAM_NOTIFICATION); 

Это необходимо сделать перед приготовлением.

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

 public void ringtone(){ try { Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification); r.play(); } catch (Exception e) { e.printStackTrace(); } } 

Вы можете использовать Notification и NotificationManager для отображения требуемого уведомления. Затем вы можете настроить звук, который хотите воспроизвести, с помощью вашего уведомления.

У меня был почти такой же вопрос. После некоторых исследований я считаю, что если вы хотите воспроизвести системный «звук уведомления» по умолчанию, вам в значительной степени нужно отобразить уведомление и сказать ему использовать звук по умолчанию. И есть кое-что, что можно сказать о аргументах в некоторых других ответах, что если вы играете звук уведомления, вы также должны представить сообщение с уведомлением.

Тем не менее, небольшая настройка API уведомлений, и вы можете приблизиться к тому, что хотите. Вы можете отобразить пустое уведомление, а затем удалить его через несколько секунд. Я думаю, что это сработает для меня; возможно, это сработает для вас.

Я создал набор удобных методов в com.globalmentor.android.app.Notifications.java которые позволяют создавать звуковые уведомления следующим образом:

 Notifications.notify(this); 

Светодиод также будет мигать, и, если у вас есть виброзвонок, произойдет вибрация. Да, значок уведомления появится на панели уведомлений, но исчезнет через несколько секунд.

На этом этапе вы можете понять, что, так как уведомление все равно исчезнет, ​​на панели уведомлений также может появиться сообщение с прокруткой; вы можете сделать это вот так:

 Notifications.notify(this, 5000, "This text will go away after five seconds."); 

В этом classе есть много других методов удобства. Вы можете загрузить всю библиотеку из своего репозитория Subversion и создать его с помощью Maven. Это зависит от библиотеки globalmentor-core , которая также может быть построена и установлена ​​с Maven.

 Intent intent = new Intent(this, MembersLocation.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("type",type); intent.putExtra("sender",sender); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, PendingIntent.FLAG_ONE_SHOT); String channelId = getString(R.string.default_notification_channel_id); Uri Emergency_sound_uri=Uri.parse("android.resource://"+getPackageName()+"/raw/emergency_sound"); // Uri Default_Sound_uri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); if(type.equals("emergency")) { playSound=Emergency_sound_uri; } else { playSound= Settings.System.DEFAULT_NOTIFICATION_URI; } NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, channelId) .setSmallIcon(R.drawable.ic_notification) .setContentTitle(title) .setContentText(body) .setSound(playSound, AudioManager.STREAM_NOTIFICATION) .setAutoCancel(true) .setColor(getColor(R.color.dark_red)) .setPriority(NotificationCompat.PRIORITY_HIGH) .setContentIntent(pendingIntent); // notificationBuilder.setOngoing(true);//for Android notification swipe delete disabling... NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // Since android Oreo notification channel is needed. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannel channel = new NotificationChannel(channelId, "Channel human readable title", NotificationManager.IMPORTANCE_HIGH); AudioAttributes att = new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_NOTIFICATION) .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH) .build(); channel.setSound(Emergency_sound_uri, att); if (notificationManager != null) { notificationManager.createNotificationChannel(channel); } } if (notificationManager != null) { notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); } } 

Я думаю, что понятие «звук уведомления» как-то неверно для Android UI.

Ожидаемое поведение Android заключается в использовании стандартного уведомления для предупреждения пользователя. Если вы воспроизводите звук уведомления без значка строки состояния, вы можете смутить пользователя («что это был за звук? Здесь нет значка, может быть, у меня проблемы со слухом?»).

Как установить звук в уведомлении, например, здесь: Настройка звука для уведомления

  • Истекает ли идентификатор регистрации GCM?
  • android: запуск фоновой задачи с помощью AlarmManager
  • Отмена уведомления об удалении приложения из многозадачной панели
  • Уведомления Android с кнопками на нем
  • Откройте приложение после нажатия кнопки «Уведомление»
  • Как использовать Notification.Builder
  • Извлечение текста извещных, contentView или contentIntent
  • Android - создайте уведомление, TaskStackBuilder.addParentStack не работает
  • Отсутствие права на уведомление Push Push
  • Как нарисовать представление поверх всего?
  • Проверьте, включены ли локальные уведомления в IOS 8
  • Давайте будем гением компьютера.