我编辑并尝试过很多方法。基本上有按钮。我想要的是,如果我点击它,它将在每5秒钟后再次开始播放声音'norse',直到我再次点击该按钮。我写的脚本对我来说似乎很好,但每次都崩溃:(。这是代码和错误,你能帮忙吗?
//BUTTON SHIT\\
teebheli = false;
magamine = MediaPlayer.create(this, R.raw.norse);
bhelitegija = (Button) findViewById(R.id.bTeeHeli);
bhelitegija.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (teebheli == false ){
bhelitegija.setText("Lõpeta heli!");
magamine.start();
teebheli = true;
}
if (teebheli == true) {
bhelitegija.setText("Tee heli!");
magamine.stop();
teebheli = false;
}
}
});
piiksumine = new Thread(){
public void run(){
try {
int piiksumine = 0;
while (piiksumine < 5000) {
sleep(100);
piiksumine = piiksumine + 100;
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
piiksumine.start();
}
}
};
单击按钮时AND错误:
08-11 18:09:36.738: ERROR/MediaPlayer(1224): start called in state 0
08-11 18:09:36.738: ERROR/MediaPlayer(1224): error (-38, 0)
08-11 18:09:36.746: ERROR/MediaPlayer(1224): stop called in state 0
08-11 18:09:36.746: ERROR/MediaPlayer(1224): error (-38, 0)
08-11 18:09:36.777: ERROR/MediaPlayer(1224): Error (-38,0)
08-11 18:09:36.786: ERROR/MediaPlayer(1224): Error (-38,0)
答案 0 :(得分:1)
您尚未为PreferenceManager.getDefaultSharedPreferencesName
设置名称。
(在我的头顶,但尝试类似下面的事情):
PreferenceManager.setDefaultValues(context, sharedPreferencesName,
sharedPreferencesMode, resId, readAgain);
在尝试获取共享偏好设置之前执行此操作。
将您喜欢的任何内容放入值中,如果变量名称不清楚,请查看文档:)
希望这有帮助!
编辑:
现在您正尝试访问在另一个线程中实例化的MediaPlayer。你不能这样做。您需要在同一个线程中使用MediaPlayer.create()和MediaPlayer.start()。
答案 1 :(得分:0)
一个实现就是只启动一个异步任务,然后启动一个无限循环,在循环中继续询问系统时间,将时间与初始时间进行比较,如果时间过去等于五秒钟就开火了嘟。
答案 2 :(得分:0)
你的Thread中有很多piiksumine,无论这意味着什么,我宁愿给Thread和int赋予不同的名字。
此外,我不确定我是否理解这里的目的,但我认为你不应该使用piiksumine.start()在自己的run()方法中启动线程;
答案 3 :(得分:0)
您可以尝试使用android.os.CountDownTimer,并使用长倒计时。你可以使用onTick()方法来播放声音(通过在构造函数中将countDownInterval设置为5秒)。您可以在下次按下按钮时通过调用cancel()来停止它。