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