【发布时间】:2015-06-17 18:01:54
【问题描述】:
我的 Android 应用中的 SoundPool 出现问题。
在我使用 Soundpool 的 play() 方法中的参数之前,它一直在工作。我已将播放速率设置为 2f 并收到此警告:
06-17 19:53:13.359: W/AudioTrack(11526): AUDIO_OUTPUT_FLAG_FAST denied by client
再次将其设置回 1f 后,我现在遇到了这些错误:
06-17 19:53:13.359: W/AudioTrack(11526): AUDIO_OUTPUT_FLAG_FAST denied by client
06-17 19:53:13.359: E/AudioTrack(11526): AudioFlinger could not create track, status: -12
06-17 19:53:13.359: E/SoundPool(11526): Error creating AudioTrack
这一切都发生在我的带有 Android L 和 Eclipse 的三星 Note 4 上。 在我的三星 s3 上运行正常,但我没有通过 USB 安装应用程序,而速率仍设置为 2f。
这是所有必要的代码:
设置声音池
public void setUpSounds()
{
soundPool=new SoundPool(20,AudioManager.STREAM_MUSIC,0);
soundPool.setOnLoadCompleteListener(new SoundPool.OnLoadCompleteListener()
{
@Override
public void onLoadComplete(SoundPool soundPool, int sampleId,int status)
{
if(sampleId==beepID)
{
if(status==0)
{
beepLoaded=true;
}
}
else if(sampleId==buttonClickID)
{
if(status==0)
{
buttonClickLoaded=true;
}
}
else if(sampleId==menuEnterID)
{
if(status==0)
{
menuEnterLoaded=true;
}
}
else if(sampleId==menuExitID)
{
if(status==0)
{
menuExitLoaded=true;
}
}
}
});
buttonClickID=soundPool.load(this,R.raw.buttonclick, 0);
beepID=soundPool.load(this, R.raw.beep,0);
menuEnterID=soundPool.load(this, R.raw.menuenter,0);
menuExitID=soundPool.load(this, R.raw.menuexit,0);
}
播放声音:
/**
* play the menu exit sound
*/
public void playMenuExitSound()
{
if(soundFXOn&&mAct.menuExitLoaded)
{
mAct.soundPool.play(mAct.menuExitID, 0.2f, 0.2f, 0, 0, 1.0f);
}
}
/**
* play the menu entered sound
*/
public void playMenuEnterSound()
{
if(soundFXOn&&mAct.menuEnterLoaded)
{
mAct.soundPool.play(mAct.menuEnterID, 0.2f, 0.2f, 0, 0, 1.0f);
}
}
/**
* plays the button click sound
*/
public void playButtonClick()
{
if(soundFXOn&&mAct.buttonClickLoaded)
{
mAct.soundPool.play(mAct.buttonClickID, 1f, 1f, 0, 0, 1.0f);
}
}
线程内的哔声
if(mView.soundFXOn&&mView.mAct.beepLoaded)
{
mView.mAct.soundPool.play(mView.mAct.beepID, 0.05f, 0.05f, 0, 0, 1);
}
我只是看不出有什么问题,它一定是在我的 Note 内部,不会再播放声音了!
或者 Eclipse 中的某些东西完全出错了,所以它会发送错误的标志或类似的东西
【问题讨论】:
-
我现在已经在我的 S3 上尝试过了,它甚至可以在设置为 2.0f 的速率下运行!!! WTF???Note 不允许,但我的 2012 S3 允许?Th8is 是这里发生的一些乱七八糟的事情!!!