Предварительная загрузка звуковых эффектов - PullRequest
0 голосов
/ 18 июля 2011

У меня работает счетчик (спасибо за помощь), и я добавил звук с помощью MediaPlayer, проблема в том, что загрузка счетчика задерживается из-за того, что звуки загружаются в одном классе.

ЕстьЕсть ли способ предварительно загрузить звуки с помощью основного класса, поэтому, когда вызывается счетчик, номера буферизуются и могут вызываться из этого класса?

Приложение имеет заставку и единственноецель состоит в том, чтобы загрузить все, что нужно другим классам, чтобы избежать задержек.

Если звуки не могут быть загружены из другого класса, могут ли они быть загружены отдельно во время воспроизведения?

Это то, что ядо сих пор ...

final boolean sound = timer_sound.getBoolean("timer_sound", true);

  final MediaPlayer number01 = MediaPlayer.create(this, R.raw.number_1);
  final MediaPlayer number02 = MediaPlayer.create(this, R.raw.number_2);
  final MediaPlayer number03 = MediaPlayer.create(this, R.raw.number_3);
  final MediaPlayer number04 = MediaPlayer.create(this, R.raw.number_4);
  final MediaPlayer number05 = MediaPlayer.create(this, R.raw.number_5);
  final MediaPlayer number06 = MediaPlayer.create(this, R.raw.number_6);
  final MediaPlayer number07 = MediaPlayer.create(this, R.raw.number_7);
  final MediaPlayer number08 = MediaPlayer.create(this, R.raw.number_8);
  final MediaPlayer number09 = MediaPlayer.create(this, R.raw.number_9);
  final MediaPlayer number10 = MediaPlayer.create(this, R.raw.number_10);
  final MediaPlayer number15 = MediaPlayer.create(this, R.raw.number_15);
  final MediaPlayer number20 = MediaPlayer.create(this, R.raw.number_20);

lastSeconds = (TextView) findViewById(R.id.lastminuteseconds);

lastMinute = new CountDownTimer(60 * 1000, 1000) {

  public void onTick(long secondsToStart) {
    int elapseTime = (int) (secondsToStart / 1000);

    if (sound == true){
      switch(elapseTime) {
        case 1: number01.start();break;
        case 2: number02.start();break;
        case 3: number03.start();break;
        case 4: number04.start();break;
        case 5: number05.start();break;
        case 6: number06.start();break;
        case 7: number07.start();break;
        case 8: number08.start();break;
        case 9: number09.start();break;
        case 10: number10.start();break;
        case 15: number15.start();break;
        case 20: number20.start();break;
      }
    }

это работает почти нормально, проблема в том, что загрузка файлов занимает 2 секунды, и я хотел добавить еще несколько (50, 40, 30).

Ответы [ 2 ]

0 голосов
/ 12 августа 2011

Я учусь медленно, и я понял это.

Я не могу поверить, насколько просто это было сделать ...

Не ставить весь код, вот внесенные изменения;

Сначала я прекращаю загружать звук с помощью переключателя, но я использовал переключатель, вызывающий класс ..

  if (sound == true){
    switch(elapseTime) {
      case 1: number01();break;
      case 2: number02();break;

Затем я загружаю звуки при вызове класса;

 public void number01(){
   final MediaPlayer number01 = MediaPlayer.create(this, R.raw.number_1);
     number01.start();
   }
 public void number02(){
    final MediaPlayer number02 = MediaPlayer.create(this, R.raw.number_2);
    number02.start();
 }

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

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

0 голосов
/ 18 июля 2011

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

Таким образом, вы предварительно загружаете только первый звук, затем в ontick () вы запускаете загрузку следующего звука при воспроизведении текущего звука через run () и меняете звуковые объекты на следующий ontick ().

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