基于定时器的If-else语句



我有一个基本的门铃应用程序,我正在解决最后几个问题。我最后遇到的一个问题是振动功能问题。

我有一个if-else语句,它允许手机根据布尔值振动。这非常有效。

我希望在手机播放我的声音时禁用此功能。

我想这将通过一个if else语句来完成,类似于这样的语句:

if(dBell.isPlayingSound()) {
// No vibrate
} else {
Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(500);
}

要么是这样,要么是基于我设置的更改图片的计时器,例如:

if(timer.hasNotExecuted) {
// No vibrate
} else {
Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(500);
}

这是我当前的if else语句,它使振动切换:

if (vibeOn) {
Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(500);
} else {
// No vibration
}

我需要在布尔值为true时以及计时器未完成时(或声音未播放时)进行振动切换。也许是这样的:

if(vibeOn && timer.hasFinished) {
Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(500);
} else {
// No vibration
}

if(vibeOn && dBell.isNotPlaying) {
...

类似的东西。我不知道该怎么办。我想我已经有了基本的想法,但我不知道实现它的代码。

救命!

谢谢!

Nathan

编辑:

有东西要编译:

if (vibeOn && !dBell.isPlaying()) {
Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(500);
} else {
// No vibration
}

这位于单击ImageButton时调用的方法内部。

按下按钮后,dBell立即启动,所以我不明白为什么!dBell.isPlaying()限制会出现问题。它不断地认为声音是正确的。

我想这可能是因为我告诉按钮在检查是否在播放之前播放声音。

所以,我把声音放成这样:

if (vibeOn && !dBell.isPlaying()) {
Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibe.vibrate(500);
} else {
// No vibration
}
dBell.start();

这允许第一次播放声音,但之后每次都不起作用。

找到问题所在!

我在一个计时器的末尾实现了dBell.stop();,导致MediaPlayer中断。我将从这里开始使用MediaPlayer方法,看看哪些方法有效。

谢谢大家!

取决于您播放声音的用途。。。媒体播放器、音轨或音频管理器。。。查看您正在使用的API类

不过你正朝着正确的方向前进。。。我会采取询问歌曲是否正在播放的方法

最新更新