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);
}