繁体   English   中英

流音频文件到Soundpool load()Android

[英]Streaming audio file to 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类,但是我找不到任何好的教程来解决这个问题。

您需要先检查文件是否已成功加载,然后再使用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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM