Как воспроизвести mp3 в папке res / raw моего приложения для Android?

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

International Number Formatter

23
задан damonkashu 12 November 2010 в 06:42
поделиться

3 ответа

При запуске действия, т. Е. На onCreate, добавьте следующий код.

  public void onCreate(Bundle savedInstanceState) {


        super.onCreate(savedInstanceState);         
        setContentView(R.layout.main);

        MediaPlayer mPlayer = MediaPlayer.create(FakeCallScreen.this, R.raw.mysoundfile);
        mPlayer.start();

    }

При остановке действия, т. Е. На onDestroy, добавьте следующий код.

   public void onDestroy() {

    mPlayer.stop();
    super.onDestroy();

}

Надеюсь, это поможет:)

72
ответ дан Muhammad Shahab 12 November 2010 в 06:42
поделиться

Скорее всего, вы предпочтете использовать класс SoundPool . Это уменьшает задержку, когда пора воспроизводить звук, и предлагает другие тонкости, такие как возможность расставить приоритеты звуков, когда слишком много для воспроизведения одновременно.

Из документов:

SoundPool - это набор семплов, которые можно загрузить в память из ресурса внутри APK или из файла в файловой системе. Библиотека SoundPool использует сервис MediaPlayer для декодирования звука в необработанный 16-битный монофонический или стереопоток PCM. Это позволяет приложениям отправлять сжатые потоки, не испытывая нагрузки на процессор и задержки декомпрессии во время воспроизведения.

Например:

/**
 * How many sounds can be played at once.
 */
private static final int MAX_SOUND_POOL_STREAMS = 4;

/**
 * Modify this as part of your own priority scheme. Higher numbers mean higher
 * priority. If you don't care, it's okay to use the same priority for every
 * sound.
 */
private static final int NORMAL_PRIORITY = 10;

private int mySoundId;

@Override
public void setupContent() {
    this.soundPool = new SoundPool(MAX_SOUND_POOL_STREAMS,
            AudioManager.STREAM_MUSIC, 100);
    this.mySoundId = this.soundPool.load(this.getApplicationContext(),
            R.raw.mySound, 1);
}

@Override
private void playMySound() {
    this.soundPool.play(this.mySoundId, 1, 1, NORMAL_PRIORITY, 0, 1);
}
8
ответ дан Michael Scheper 12 November 2010 в 06:42
поделиться

Это статический метод, который я использую в своих проектах. Я добавляю его в свой класс Utils:

    public static void playSound(final Context context, final SoundType type)
    {

            new Thread(new Runnable()
            {

                @Override
                public void run()
                {
                    MediaPlayer mediaPlayer = new MediaPlayer();
                    int resId = -1;
                    switch (type)
                    {
                    case INCOMING_NOTIFICATION:
                        resId=R.raw.noti_sound;
                        break;
                    case SEND_BETTING_SLIP:
                        resId=R.raw.slip_sent;
                        break;
                    case TRIVIA_RIGHT_ANSWER:
                        resId=R.raw.game_bonus;
                        break;
                    case TRIVIA_WRONG_ANSWER:
                        resId=R.raw.whistle_referee_trivia_bad_answer;
                        break;
                    }

                    if (resId != -1)
                    {
                        mediaPlayer = MediaPlayer.create(context, resId);
                        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
                        mediaPlayer.setLooping(false);
                        mediaPlayer.start();

                        while (mediaPlayer.isPlaying() == true)
                        {
                        }
                    }
                }
            }).start();

        }
}

, теперь я определяю Enum (SoundType) и помещаю mp3-файлы в папку raw в папку res.

2
ответ дан Gal Rom 12 November 2010 в 06:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: