Воспроизведение мелодии по умолчанию - PullRequest
8 голосов
/ 01 ноября 2010

Я пытался использовать SoundPool для воспроизведения мелодии по умолчанию без успеха.В приведенном ниже коде

String ringtone = Settings.System.DEFAULT_RINGTONE_URI.getPath();
SoundPool ringPhone = new SoundPool(2, AudioManager.STREAM_RING, 1);
int soundID = ringPhone.load(Settings.System.DEFAULT_RINGTONE_URI.getPath(), 1);
int soundID = ringPhone.load(ringtone, 1);
ringPhone.play(soundID, 0.99f, 0.99f, 1, 0, 1);

я получаю сообщение «ошибка загрузки содержимого / образца системы / мелодии 0 не готова»Замена URI жестким путем к существующему mp3-файлу на SD-карте дает аналогичные результаты.

Что я делаю не так?Спасибо,

Кайл

1 Ответ

22 голосов
/ 01 ноября 2010

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

MediaPlayer player = MediaPlayer.create(this,
    Settings.System.DEFAULT_RINGTONE_URI);
player.start();

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...