Похоже, что вы воспроизводите звук в музыкальном потоке по ссылке AudioManager.STREAM_MUSIC
.Изменение уровня громкости изменяет уровень всего, что воспроизводится в этом потоке.Вот почему воспроизведение музыки / мультимедиа «испорчено».
Если вы хотите использовать поток звонка (и настройку его громкости), вам следует вместо этого использовать AudioManager.STREAM_RING
.Вы говорите, что пробовали это, но фрагмент кода, который вы дали, просто регулирует громкость - вы не показали, как вы создаете и настраиваете MediaPlayer
, прежде чем попросить его воспроизвести ваш звук.
Вы должны выбрать соответствующий поток, когда настраиваете свой экземпляр MediaPlayer
.Поскольку я успешно использовал разные потоки в описываемом вами сценарии, вот в чем ваша проблема.Чтобы выбрать аудиопоток, в котором воспроизводится ваш пользовательский звуковой сигнал, используйте setAudioStream
в своем экземпляре MediaPlayer
, например, так:
// Get a reference to the MP3 file to play
AssetFileDescriptor afd = getContext().getResources().openRawResourceFd(R.raw.my_mp3);
// Create the media player
MediaPlayer mediaPlayer = new MediaPlayer();
// Give it the MP3 you want played
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
// Set the audio stream to play over
mediaPlayer.setAudioStreamType(AudioManager.STREAM_RING);
// Now play the sound
mediaPlayer.prepare();
mediaPlayer.start();
Рекомендуется предлагать пользователям возможность выбирать поток для себя.- в дополнение к потокам музыки и звонка есть потоки тревог и уведомлений, каждый с независимым уровнем громкости (есть и другие, но это основные).Ознакомьтесь с документацией по Android для AudioManager здесь .