Android MP3 MediaPlayer ломает некоторые телефоны - PullRequest
1 голос
/ 08 декабря 2010

Я выпустил свое первое приложение для Android две недели назад (MMO под названием Agent Syndicate), и все работало хорошо, кроме звуков и музыки!

Используя стандартные файлы MP3, созданные в Sony Sound Forge Pro 10 со скоростью 128 кбит / с, я сразу же получил сообщения от многих пользователей, жалующихся на проблемы Force Close на самых разнообразных телефонах, в основном на Android 2.1 и 2.2. Я выпустил новую версию, в которой все звуки отключены, и жалобы прекратились. Однако мне бы очень хотелось иметь звуки, так что это далеко от идеала.

У меня нет доступа к ресурсам для тестирования игры на чем-либо, кроме моего личного телефона и эмулятора (где все работает безупречно), но очевидно, что для многих игроков существует серьезная проблема!

Разве я не должен использовать MP3? Существует ли универсальный метод, который лучше всего работает на всех телефонах для простого воспроизведения простых звуковых файлов?

Это то, что я использую для запуска звуковых эффектов:

final MediaPlayer player = MediaPlayer.create(GlobalState.Instance, resId);
player.setOnCompletionListener(new MediaPlayer.OnCompletionListener()
{
    public void onCompletion(MediaPlayer mp)
    {
        mp.release();
    }
});
player.setVolume(0.5f, 0.5f);
player.start();

Изначально я вызывал player.prepare () перед player.start (), но продолжал получать IllegalStateExceptions для некоторых звуковых файлов. Некоторая информация очень сбивает с толку, когда именно вызывать эти методы и что означает исключение. Удаление player.prepare () позволило мне работать в эмуляторе и на моем локальном устройстве разработчика в 100% случаев.

1 Ответ

0 голосов
/ 08 декабря 2010

Не должно быть проблем с использованием MediaPlayer для музыки, но для звукового эффекта я бы использовал класс SoundPool .Я предполагаю, что вы получаете IllegalStateExceptions, потому что вы запускаете MediaPlayer до завершения подготовки игрока.Правильным способом было бы ввести onPreparedListener для MediaPlayer и начать отсюда.Вы выполняете операцию MediaPlayer в главном потоке пользовательского интерфейса?

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