2010-02-21 5 views
2

Поправка: Похоже, что проблема связана с конкретным звуковым файлом, который я использовал. Другие приложения на дроидах, такие как диспетчер файлов Astro, также не могут воспроизвести его, и если я заменил его в пакете файлом AAC, он воспроизводит его без ошибок. Я закодировал проблемный аудиофайл в формате MP3 из WAV-файла, используя LAME на ubuntu. Было бы хорошо знать ограничения для медиа-плеера Android. У mplayer нет проблем с воспроизведением файла на ubuntu. Полагаю, я должен представить отчет об ошибке.Проблема с воспроизведением звука на android

Оригинальный вопрос: Следующий код разбивается, когда я пытаюсь воспроизвести его на своем дроиде. Сообщение об ошибке, указанное в журнале, это «Command PLAYER_INIT completed with an error or info PVMFErrNoResources.». Затем исключение IOException возникает на линии mp.prepare(). В моем каталоге проекта есть файл res/raw/bell.mp3, который, как я полагаю, соответствует R.raw.bell в коде ниже. Я строю с «ant debug». Если это актуально, когда я создал каталог проекта с «android create», я установил целевой номер 4, соответствующий моей системе, на «android 2.0».

Что я делаю неправильно, здесь?

import java.io.IOException; 
    import android.app.Activity; 
    import android.os.Bundle; 
    import android.media.MediaPlayer; 
    import android.util.Log; 

    public class testapp extends Activity 
    { 
     /** Called when the activity is first created. */ 
     @Override 
     public void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
    try { 
     MediaPlayer mp = MediaPlayer.create(this, R.raw.bell); 
     mp.prepare(); 
     mp.start(); 
    } catch (IOException e) { 
     Log.v(getString(R.string.app_name), e.getMessage()); 
    } 
     } 

} 
+0

Что произойдет, если вы попробуете это на эмуляторе? –

+0

Не уверен; кажется, проблема с воспроизведением этого конкретного аудиофайла (см. исправление к вопросу.) Спасибо за предложение. –

ответ

1

Вам не нужно звонить prepare(), если вы используете статический create() метод, чтобы получить MediaPlayer. Он делает шаг prepare() для вас. Вам нужно только позвонить prepare(), если вы используете обычный конструктор MediaPlayer или если вы пытаетесь вернуть клип обратно в начало для воспроизведения с существующего объекта MediaPlayer.

Вот sample project для воспроизведения звуков (в моем случае, клипа Ogg).

+0

Спасибо, что указали это. Однако удаление вызова prepare() не устранило ошибку. Я ошибался в том, что линия выдавала ошибку. Это был призыв к созданию. Я думаю, что я определил ключевую проблему: аудио-файл по-разному не воспроизводится на дроиде. См. Мою поправку к вопросу. –

+0

«Было бы хорошо знать ограничения медиа-плеера Android». Я бы сначала подтвердил ваш MP3 в соответствии с спецификациями, определенными по адресу http://developer.android.com/intl/de/guide/appendix/media-formats.html. – CommonsWare

+0

Кроме того, комментарий Криса Томпсона имеет значение. Если файл успешно воспроизводится на эмуляторе, проблема является чем-то особенным для DROID, и вашим лучшим вариантом для помощи будет поддержка плат MOTODEV. Если файл не работает на эмуляторе и соответствует указанным выше спецификациям, может возникнуть ошибка в самом OpenCORE, и в этом случае http://b.android.com будет местом для его записи (тогда и только тогда, когда вы можете законно предоставить файл, демонстрирующий поведение). – CommonsWare

Смежные вопросы