Soundpool ne joue que les 5 premières secondes du fichier. Pourquoi?

J'utilise Soundpool dans mon application, jusqu'à maintenant cela fonctionne bien, mais j'ai un fichier wav de 10 secondes. Malheureusement, soundpool ne joue que les 5 premières secondes. Comment faire de soundpool pour jouer toute la piste? J'ai convertis wav to – ogg et mp3 encore le même problème. Il ne joue que les 5 premières secondes. Toute aide serait très appréciée.

//set up audio player mSoundPool = new SoundPool(20, AudioManager.STREAM_MUSIC, 0); //load fx mSoundPoolMap.put(RAW_1_1, mSoundPool.load(this, R.raw.loop1, 1)); //playing soundpool case R.id.button1: mSoundPool.stop(mStream1); mStream1= mSoundPool.play(mSoundPoolMap.get(RAW_1_1), streamVolume, streamVolume, 1, LOOP_1_TIME, 1f); 

UPD Last: Peut-être que quelqu'un le trouvera ici et le lira. On dirait que soundpool ne peut pas jouer plus de 5 secondes. C'est son maximum, pour des sons plus longs utilisent MediaPlayer. J'espère que vous ne passerez pas tellement de temps que je l'ai fait)

  • Problèmes avec Android Soundpool
  • Android MediaPlayer setNextMediaPlayer () alternative
  • Android SoundPool: soyez informé à la fin de la lecture
  • Comment arrêter tous les sons dans SoundPool?
  • Uncaught exception lancé par le finalisateur java.lang.IllegalStateException: Binder a été finalisé
  • L'échantillon de Soundpool n'est pas prêt
  • Comment jouer des sons à des périodes précises sur différents appareils dans Android
  • Comment puis-je savoir si un son a terminé de jouer dans Android?
  • 5 Solutions collect form web for “Soundpool ne joue que les 5 premières secondes du fichier. Pourquoi?”

    Je pense donc que vous avez atteint la limite 1M de SoundPool.

    SoundPool est un code dur de la taille du tampon comme 1M, pour tous les fichiers chargés, stockez au format pcm.

    Donc, il ne faut pas oublier ogg ou wav.

    Nous avons résolu un problème similaire en diminuant notre taux d'échantillonnage des effets * .ogg. Notre taux d'échantillonnage initial était de 44 kHz ~ et seulement 10 secondes de son joué, diminuant jusqu'à 16 kHz pour augmenter la jouabilité à 30 secondes

    Une solution a été trouvée dans cette discussion

    SoundPool conçu pour jouer de courts effets sonores. Pour jouer de la musique (gros fichiers audio), vous devez utiliser MediaPlayer

     // R.raw.audio_file - res/raw/audio_file.mp3 mediaPlayer = MediaPlayer.create(this, R.raw.audio_file); mediaPlayer.start(); 

    Cette activité fonctionne pour moi

     public class MainActivity extends Activity { private Integer soundID; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); this.setVolumeControlStream(AudioManager.STREAM_MUSIC); // Load the sound AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); float actualVolume = (float) audioManager .getStreamVolume(AudioManager.STREAM_MUSIC); float maxVolume = (float) audioManager .getStreamMaxVolume(AudioManager.STREAM_MUSIC); final float volume = actualVolume / maxVolume; SoundPool soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() { @Override public void onLoadComplete(SoundPool soundPool, int sampleId, int status) { @Override public void onLoadComplete(SoundPool soundPool, int sampleId, int status) { soundPool.play(soundID, volume, volume, 1, 0, 1f); try { Thread.sleep(5000); // play twice } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } soundPool.play(soundID, volume, volume, 1, 0, 1f); } }); } }); soundID = soundPool.load(this, R.raw.sound2, 1); //load fx //playing soundpool } } 

    Vous devez vous charger de l'asynchronisme du son et vérifier le cache audio – il peut être débordé.

    Lisez cet article http://www.google.by/url?http://www.vogella.com/articles/AndroidMedia/article.html

    C'est très attentif

    Votre fichier est probablement trop important. Essayez de passer de stéréo à mono, si vous n'avez pas besoin de stéréo de toute façon. Ou essayez de supprimer votre fichier.

    La réduction des fichiers a fonctionné dans mon cas.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.