android - уменьшить - раздельная громкость звонка и уведомлений




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

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

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

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


Если вы хотите, чтобы звук уведомления по умолчанию воспроизводился, вы можете использовать setDefaults(int) класса 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);

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


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

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

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

mp.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);

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


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

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

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

Notifications.notify(this);

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

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

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

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


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

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

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





notifications