Soundpool 没有播放任何声音
Soundpool is not playing any sound
我正在尝试让 soundpool 工作,因为我需要将它用于一个项目。问题是它没有播放任何声音。我只是想播放测试声音,看看它是否有效。希望有人能看到我在这里做错了什么。
public class MainActivity extends AppCompatActivity {
SoundPool soundPool;
int game_over;
@Override
protected void onCreate(
Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
AudioAttributes audioAttributes = new AudioAttributes
.Builder()
.setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();
soundPool = new SoundPool
.Builder()
.setMaxStreams(4)
.setAudioAttributes(audioAttributes)
.build();
}
game_over = soundPool.load(this, R.raw.test, 1);
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
soundPool.play(game_over, 1, 1, 1, 1, 1f);
}
});
}
}
在 load
调用之前设置 setOnLoadCompleteListener
(应该使用 sampleId
,因为 game_over
可能尚未分配)
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
soundPool.play(sampleId, 1, 1, 1, 1, 1f);
}
});
game_over = soundPool.load(this, R.raw.test, 1);
afaik SoundPool
的所有 load
方法都是同步的 - 它们返回已加载音频文件的 ID。设置 OnLoadCompleteListener
AFTER loading audio 将不会调用此侦听器,因为没有更多要加载的内容
此代码现在可以使用。为什么它没有在我的 phone 上播放是因为它使用的是系统音量而不是音乐音量。希望这对以后的其他人有所帮助。
我正在尝试让 soundpool 工作,因为我需要将它用于一个项目。问题是它没有播放任何声音。我只是想播放测试声音,看看它是否有效。希望有人能看到我在这里做错了什么。
public class MainActivity extends AppCompatActivity {
SoundPool soundPool;
int game_over;
@Override
protected void onCreate(
Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
AudioAttributes audioAttributes = new AudioAttributes
.Builder()
.setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();
soundPool = new SoundPool
.Builder()
.setMaxStreams(4)
.setAudioAttributes(audioAttributes)
.build();
}
game_over = soundPool.load(this, R.raw.test, 1);
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
soundPool.play(game_over, 1, 1, 1, 1, 1f);
}
});
}
}
在 load
调用之前设置 setOnLoadCompleteListener
(应该使用 sampleId
,因为 game_over
可能尚未分配)
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener() {
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId, int status) {
soundPool.play(sampleId, 1, 1, 1, 1, 1f);
}
});
game_over = soundPool.load(this, R.raw.test, 1);
afaik SoundPool
的所有 load
方法都是同步的 - 它们返回已加载音频文件的 ID。设置 OnLoadCompleteListener
AFTER loading audio 将不会调用此侦听器,因为没有更多要加载的内容
此代码现在可以使用。为什么它没有在我的 phone 上播放是因为它使用的是系统音量而不是音乐音量。希望这对以后的其他人有所帮助。