我有一个单按钮的Android应用程序。单击该按钮时,应用程序开始播放(循环)SoundPool加载的声音。再次单击该按钮时,声音停止,然后再次启动。
但问题是声音只是每隔一段时间播放一次。
当声音没有播放时,logcat中会出现此错误:
E/AudioTrack: AudioFlinger could not create track, status: -12
E/SoundPool: Error creating AudioTrack
当我删除循环(将-1更改为0)时,一切正常!
我正在播放的声音是一个MP3文件,大小为71.6 KiB。
我在索尼Xperia U上测试了这个,运行Android 4.1.2(不工作)。但在我的华为Honor 6(Android 6.0)中,一切正常,包括循环!
我究竟做错了什么?
这是我的代码:
import android.media.AudioManager;
import android.media.SoundPool;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private int lastStreamId = 0;
private int soundID;
private SoundPool soundPool;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
soundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
soundID = soundPool.load(this, R.raw.sound01, 1);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
soundPool.stop(lastStreamId);
lastStreamId = soundPool.play(soundID, 1, 1, 1, -1, 1);
}
});
}
}
编辑:
我不允许在这里上传原始声音,但这是另一种声音做同样的事情。除了现在声音只在第一次点击播放;以下所有点击只是使其静音并吐出上述错误。
声音在这里:sound01.mp3
我遇到过同样的问题。请执行下列操作:
(1)确保您的文件低于1 MB
(2)更重要的是在使用SoundPool实例释放内存空间后释放它们
soundPool.release();