Потоковая передача аудиофайла в soundpool load() Android

Я хочу использовать класс SoundPool для создания эффектов скорости воспроизведения. Воспроизведение звука быстро или медленно (1x, 0,5x, 2x и т. д.). Но проблема в том, что soundpool обрабатывает только небольшие файлы. Когда я даю большой файл. Ничего не играет. Мне было интересно, можно ли загрузить поток музыки (несколько байтов моего большого аудиофайла) и воспроизвести его через звуковой пул. любая идея.??

Вот мой код для soundPool для воспроизведения песни

AudioManager mgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
float streamVolumeCurrent = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
float streamVolumeMax = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = streamVolumeCurrent / streamVolumeMax;  
soundID = soundPool.load(Environment.getExternalStorageDirectory()+"/cm.mp3", 1);
soundPool.play(soundID, volume, volume, 1, 0, 1.0f);

Я нашел классы JetPlayer и AudioTrack, но я не нашел хороших руководств, чтобы справиться с этим.


person Bhupinder    schedule 29.12.2012    source источник


Ответы (1)


Вам нужно будет убедиться, что файл успешно загружен, прежде чем воспроизводить его, используя SoundPool.setOnLoadCompleteListener< /а>

public void loadSound (String strSound, int stream) {
     boolean loaded = false;
     mSoundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
            @Override
            public void onLoadComplete(SoundPool soundPool, int sampleId,
                    int status) {
                loaded = true;
            }
        });
    try {
          stream= mSoundPool.load(aMan.openFd(strSound), 1);
        } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
   // Is the sound loaded already?
   if (loaded) {
     mSoundPool.play(stream, streamVolume, streamVolume, 1, LOOP_1_TIME, 1f);
    }
}

где мужчина

AssetFileDescriptor aMan =  getAssets();
person Chirag Patel    schedule 08.02.2013
comment
Вы уверены, что он будет работать для воспроизведения больших звуковых файлов? а что такое человек? - person Bhupinder; 08.02.2013
comment
@Bhupinder Нет, он не будет воспроизводить большой файл, потому что SoundPool в основном используется для воспроизведения звука щелчка или небольшого звука. Но все же он загрузит этот большой файл и воспроизведет некоторые начальные биты этого файла. А для «aMan» я обновил свой ответ. Я надеюсь, что это поможет вам - person Chirag Patel; 08.02.2013