基于定时器的if-else语句

If-else statement based on timer

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

我有一个 if-else 语句,它允许 phone 基于布尔值振动。这非常有效。

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

我认为这可以通过 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
    }

我需要在布尔值为真且计时器未完成(或未播放声音)时触发振动切换。所以也许是这样的:

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

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

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

求助!

谢谢!

内森

编辑:

有东西要编译:

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 您正在使用的class

不过你的方向是正确的...我会采取询问歌曲是否正在播放的方法