If-else语句基于计时器

时间:2015-04-21 22:09:21

标签: android if-statement timer

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

我有一个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
    }

当布尔值为真且定时器未完成时(或声音未播放时),我需要进行振动切换。所以也许是这样的:

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方法,看看哪些方法有效。

谢谢你们!

1 个答案:

答案 0 :(得分:0)

取决于您播放声音的用途...媒体播放器,录音机或听力管理员...查看您正在使用的课程的API

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