0

Я пишу игру, где нужно много раз воспроизводить несколько звуковых файлов.Проблема с памятью, когда Play & Stop Audio файл несколько раз

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

try { 
      if (commonPlayer.isPlaying()) { 
       commonPlayer.stop(); 
       commonPlayer.release(); 
      } 

      commonPlayer = null; 

      switch (gameAction) { 
       case 1: 
        commonPlayer = MediaPlayer.create(context, R.raw.tap); 
        break; 

       case 2: 
        commonPlayer = MediaPlayer.create(context, R.raw.score); 
        break; 

       case 3: 
        commonPlayer = MediaPlayer.create(context, R.raw.die); 
        break; 
      } 

      commonPlayer.start(); 

     } catch (Exception e) { 
      log("Exception: " + e.getMessage()); 
     } 

Но после игры несколько раз это прекратить играть с следующей ошибкой:

01-24 22:25:51.215 263 28967 I ACodec : codec does not support config priority (err -2147483648) 
01-24 22:25:51.216 263 28967 I MediaCodec: MediaCodec will operate in async mode 
01-24 22:25:51.219 22703 22703 I Score : 3, 15 
01-24 22:25:51.220 263 28965 E AudioFlinger: not enough memory for AudioTrack size=131176 
01-24 22:25:51.221 263 28965 D MemoryDealer: AudioTrack (0xa15abbd0, size=4194304) 
....... 
0x00260980 | 0x00020080 | A 
01-24 22:25:51.221 263 28965 D MemoryDealer:  
01-24 22:25:51.221 263 28965 E AudioFlinger: createTrack_l() initCheck failed -12; no control block? 
01-24 22:25:51.221 263 28965 E AudioTrack: AudioFlinger could not create track, status: -12 
01-24 22:25:51.221 263 28965 E AudioSink: Unable to create audio track 
01-24 22:25:51.221 263 28965 W NuPlayerRenderer: openAudioSink: non offloaded open failed status: -19 
01-24 22:25:51.221 263 28962 E NuPlayer: received error(0xffffffed) from audio decoder, flushing(0), now shutting down 
01-24 22:25:51.221 263 28962 D NuPlayerDriver: notifyListener_l(0xab839b00), (100, 1, -19) 
01-24 22:25:51.221 22703 22773 E MediaPlayer: error (1, -19) 
01-24 22:25:51.221 263 28965 W NuPlayerRenderer: onDrainAudioQueue(): audio sink is not ready 

Любое предложение о том, как играть звуковой файл несколько раз?

ответ

0

вместо этого

try { 
      if (commonPlayer.isPlaying()) { 
       commonPlayer.stop(); 
       commonPlayer.release(); 
      } 

      commonPlayer = null; 

      switch (gameAction) { 
       case 1: 
        commonPlayer = MediaPlayer.create(context, R.raw.tap); 
        break; 

       case 2: 
        commonPlayer = MediaPlayer.create(context, R.raw.score); 
        break; 

       case 3: 
        commonPlayer = MediaPlayer.create(context, R.raw.die); 
        break; 
      } 

      commonPlayer.start(); 

     } catch (Exception e) { 
      log("Exception: " + e.getMessage()); 
     } 

попробовать этот

commonPlayer = null; 

      switch (gameAction) { 
       case 1: 
        commonPlayer = MediaPlayer.create(context, R.raw.tap); 

      commonPlayer.setOnCompletionListener(new musicCompletionListener()); 

        break; 

       case 2: 
        commonPlayer = MediaPlayer.create(context, R.raw.score); 
commonPlayer.setOnCompletionListener(new musicCompletionListener()); 

        break; 

       case 3: 
        commonPlayer = MediaPlayer.create(context, R.raw.die); 
commonPlayer.setOnCompletionListener(new musicCompletionListener()); 

        break; 
      } 

      commonPlayer.start(); 

     } 

private class musicCompletionListener implements MediaPlayer.OnCompletionListener { 
    @Override 
    public void onCompletion(MediaPlayer mediaPlayer) { 
     commonPlayer.release(); 
    } 
} 
+0

В наблюдении я нашел, что это может привести NLP в медиа слушателем и с нулевой проверки истории будет такой же, я думаю. То, что я действительно нашел, поддерживает ** commonPlayer.release(); ** из проверки isPlaying. Это помогло мне. – CoDe

+0

ответ на этот вопрос решает вашу проблему? если да, пожалуйста, примите ответ :) или дайте мне знать для любых необходимых изменений .. –

+0

Я добавил вопрос с вашим ответом. Также добавлено, что можно сделать, и это то, что работает для меня. – CoDe

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

  • Нет связанных вопросов^_^