2

我想使用 SoundPool 类来创建播放速度效果。快速或慢速播放声音(1x、0.5x、2x 等)。但问题是 soundpool 只处理小文件。当我给一个大文件时。它什么都不播放。我想知道是否可以加载音乐流(我的大音频文件的一些字节)并通过 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 类,但我没有找到任何好的教程来处理这个问题。

4

1 回答 1

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();
于 2013-02-08T05:42:31.177 回答