Звук слишком быстро прекращается в MediaPlayer :: Android

Хорошо, я боролся с этим некоторое время, и у меня есть приложения для деки, в которых я не сталкивался с этой проблемой. Я разрабатываю виджет, который позволяет воспроизводить звук при нажатии кнопки на виджете.

Я предполагаю, что я просто неправильно использую setOnPreparedListener, но в основном происходит то, что некоторые из моих звуков воспроизводятся правильно, и, скорее всего, звуки будут отсекать последнюю часть, заметную по слову или отсутствующему звуковому эффекту. Ниже мой код, пожалуйста, дайте мне знать, если у вас есть идеи, что не так с кодом, или опубликуйте рабочую версию.

Спасибо заранее.

    public int onStartCommand(Intent intent, int flags, int startId) {

            /** Get our place holder for quotes & sounds. */
            int s = UpdateService.getQuoteNumber();

            /** Check if a sound is playing if so... stop and reset it. */
            if (mp != null && mp.isPlaying()){mp.stop();mp.reset();}

            /** Create a new mediaplayer and set looping. */
            mp = MediaPlayer.create(this, SoundsClicked.randomSound[s]);
            mp.setLooping(false);

            /** Try to prepare the sound/mediaplayer, if not report error & type. */
            try {mp.prepare();} 
                catch (IllegalStateException e) {e.printStackTrace();Log.e(Integer.toString(s), "IllegalStateException");} 
                catch (IOException e) {e.printStackTrace();Log.e(Integer.toString(s), "IOException");}              

            /** Check if the sound is prepared, if so play it. */
            mp.setOnPreparedListener(new OnPreparedListener() {
                public void onPrepared(MediaPlayer mp) {
                    mp.start();
                    while (mp.isPlaying()) {};
                }
            });
            return flags;}

Это вызывается из службы (очевидно, из onStartCommand), но я подумал, что могу добавить это для тех, кто не знаком с некоторыми методами.


person Joey    schedule 02.02.2011    source источник


Ответы (1)


Если вы используете Android 2.2, очевидно, есть некоторые проблемы с MediaPlayer, обрезающим последние X% по крайней мере некоторых аудиофайлов. Я столкнулся с этой проблемой с приложением, над которым я сейчас работаю. Не нашел есть решение или нет.

person Jon Turner    schedule 21.03.2011
comment
Еще несколько заметок из моих исследований: по крайней мере, в звуковых файлах, с которыми я работаю, у меня есть проблема с обрезанием конца при воспроизведении звука с помощью MediaPlayer, но те же звуки воспроизводятся правильно, если воспроизводятся с помощью SoundPool. (К сожалению, это не так полезно, если вам нужно знать ход звуковых файлов, как это делаю я.) Кроме того, мои звуки обрезаются при воспроизведении в эмуляторе и на некоторых реальных устройствах. Однако на Galaxy Tab их нет. Я предполагаю, что Samsung сделал некоторые специальные работы над Tab, но это всего лишь предположение. - person Jon Turner; 04.04.2011
comment
Вы уверены, что эта проблема касается только 2.2? У меня такая же проблема на устройстве 2.3 прямо здесь. Есть информация, когда это будет исправлено? - person Jonny; 31.01.2013
comment
Я не знаю, если эта проблема только 2.2. Может быть 2.2+. Я считаю, что в аудиостеке 4.0 произошли существенные изменения, но я не знаю, исправлена ​​ли эта проблема или нет. - person Jon Turner; 14.02.2013