Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: BhupinderОтветов: 1

Я хочу использовать класс 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, но я не нашел хороших руководств, чтобы справиться с этим.

androidsoundpool

Ответы

Ответ 1 · рейтинг 1 · Chirag Patel

Вам нужно будет убедиться, что файл успешно загружен, прежде чем воспроизводить его, используя 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();

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы