Android проигрыватель медиафайлов с менеджером рингтонов

Ранее я использовал RingtoneManager в Android Studio, и, похоже, он уменьшал громкость любой музыки, которая воспроизводилась в другом приложении, чтобы воспроизвести предупреждение, которое я пытался воспроизвести, затем, когда мое оповещение было завершено, фоновая музыка вернулась к нормальной жизни. громкость (как это было бы по умолчанию с будильником / уведомлением) Но сейчас, через год или около того, я пытаюсь реализовать это снова, но мое оповещение не слышно из-за музыки, воспроизводимой в Google Play Music.

Является ли это изменение, которое теперь требует дополнительных параметров для функционирования, как раньше?

Я использую:

Uri notification = 
RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
myRM = RingtoneManager.getRingtone(this.getContext(), notification);
myRM.play();

Большое спасибо

1 ответ

Решение

Обработка изменений в аудиовыходе, кажется, соответствует вашим потребностям.

Короче говоря, вам нужно запросить фокусировку звука перед началом воспроизведения.

...
mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
mAudioManager.requestAudioFocus(null, mStreamType, AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
mRingtone.play();

AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK

Используется для указания временного запроса о фокусировке звука, который должен длиться недолгое время и где приемлемо для других аудиоприложений продолжать воспроизведение после понижения уровня выходного сигнала (также называемого "приглушением").

Не забудьте отключить звуковой фокус при завершении..

if (mRingtone != null && mRingtone.isPlaying()) {
    mRingtone.stop();
}
mRingtone = null;
if (mAudioManager != null) {
    mAudioManager.abandonAudioFocus(null);
}
Другие вопросы по тегам