基于定时器的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
不过你的方向是正确的...我会采取询问歌曲是否正在播放的方法
我有一个基本的门铃应用程序,我正在解决最后几个问题。我遇到的最后一个问题是振动功能问题。
我有一个 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
不过你的方向是正确的...我会采取询问歌曲是否正在播放的方法