Java 声音池崩溃应用程序
我对java有点陌生,所以如果我犯了一个非常愚蠢的错误,请容忍我。 我试图在使用SoundPool在计数器应用程序上单击按钮时播放声音,但是 单击其中一个按钮时,应用程序崩溃。 编译期间不会显示任何错误。 这是密码Java 声音池崩溃应用程序,java,android,crash,counter,soundpool,Java,Android,Crash,Counter,Soundpool,我对java有点陌生,所以如果我犯了一个非常愚蠢的错误,请容忍我。 我试图在使用SoundPool在计数器应用程序上单击按钮时播放声音,但是 单击其中一个按钮时,应用程序崩溃。 编译期间不会显示任何错误。 这是密码 package com.example.c0unter; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; impor
package com.example.c0unter;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.media.SoundPool;
import android.media.AudioManager;
public class MainActivity extends Activity {
private int Count=0;
private SoundPool spool;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button ResetButton = (Button) findViewById(R.id.ResetButton);
Button CounterButton = (Button) findViewById(R.id.CounterButton);
final TextView CountText = (TextView) findViewById(R.id.CountText);
ResetButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Sound(R.raw.reset_button);
Count=0;
CountText.setText(" " + Count);
}
});
CounterButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Sound(R.raw.counter_button);
Count++;
CountText.setText(" " +Count);
}
});
}
public void Sound(int soundID){
spool.load(this, soundID ,1);
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
float volume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
spool.play(soundID, volume, volume, 1, 0, 1f);
};
}
spool
为null
。当你在这里叫它:
spool.load(this, soundID ,1);
您将得到一个nullPointerException
。你需要在使用它之前先初始化它。例如:
spool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0);
我建议您再看一下一些教程,比如其中一个,因为代码中还有一些其他错误。您必须首先加载声音并获取ID,然后将该ID传递给
play
。您不能将R.raw.reset_按钮
传递到play
,它将不起作用。您会粘贴故障的logcat输出吗?我修复了问题并设法获得声音播放,但在我单击按钮20次左右后声音停止播放。应用程序现在没有崩溃。知道为什么吗@肯沃尔夫:太好了!对于新的错误,我不是100%肯定。如果您仍然遇到问题,我建议您提交一个新问题,其中包含更新的代码和相关详细信息。似乎每次单击按钮时,我都在创建一个新的声音池,我猜它只是内存不足。修好了,现在可以正常工作了。谢谢