Intereting Posts
Создание макета без рамки, которая перекрывает фоновый слой Android AsyncTask во внешнем классе Есть ли какой-либо код в Activity, чтобы ga_autoActivityTracking = true работал в Google Analytics V4 Интеграция Crashlytics в проект библиотеки Переключатель отображает множество чертежей для большого пальца и дорожки определенного размера Нужно ли использовать _ID в качестве первичного ключа SQlite? И он должен быть INT? (Android Dev) Примеры проектов по резервному копированию файлов и фотографий Sqlite на Google Диске программно в Android Как реализовать Admob AdView в приложении для Android Ошибка подключения Bluetooth для Android Программная клавиатура Android 3.1 в полноэкранном режиме JUnit в андроиде Как ускорить анализ XML на Android? Kotlin Kapt не показывает ошибки привязки данных при работе с Android Studio Экран блокировки телефона Android приводит к нескольким последующим событиям onPause / onResume Как добавить EditText в DialogFragment?

Как правильно установить тип аудиопотока MediaPlayer

Я пытаюсь создать способ настройки параметров громкости для каждого из разных потоков (носителей, уведомлений, мелодий звонка и т. Д.) И иметь возможность предварительного просмотра уровня выходного звука каждого потока. Я считаю, что у меня правильная реализация, но когда я устанавливаю тип выходного потока, звук не воспроизводится.

Вот код, который правильно воспроизводит выбранный пользователем звуковой сигнал:

Uri mediaUri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM); MediaPlayer mp=MediaPlayer.create(getApplicationContext(), mediaUri); //mp.setAudioStreamType(AudioManager.STREAM_ALARM); mp.start();` 

Эта прокомментированная строка – это то, что вызывает у меня проблемы. Я хотел бы услышать звуковой сигнал на уровнях громкости различных аудиопотоков, но когда я включаю эту строку для STREAM_ALARM или любого другого аудиопотока, звук вообще не воспроизводится. Какие-нибудь идеи, что здесь можно сделать?

Хорошо, я нашел решение после немного большего количества тестов, и это похоже на это, если кто-то сталкивается с той же проблемой, что и у меня. Для выполнения этого действия в манифесте необходимо разрешение MODIFY_AUDIO_SETTINGS.

 AudioManager am=(AudioManager)getSystemService(Context.AUDIO_SERVICE); am.setMode(AudioManager.MODE_NORMAL); MediaPlayer mp=new MediaPlayer(); Uri ringtoneUri=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); try { mp.setDataSource(getApplicationContext(), ringtoneUri); mp.setAudioStreamType(AudioManager.STREAM_NOTIFICATION); mp.prepare(); mp.start(); } catch(Exception e) { //exception caught in the end zone }