为什么我的应用程序不断震动?

时间:2012-02-10 03:10:16

标签: android

我在android中使用了振动服务,并设置持续时间= 500毫秒,如下所示

Vibrator v = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);        

long milliseconds = 500;

v.vibrate(milliseconds);

有时它工作正常,但有时我不知道为什么它会不断振动而且只有在我打开屏幕时才会停止。 我的应用程序适用于Android 2.2。

请帮帮我。

非常感谢。

/ ** 修改 * /

感谢您的回复,

我开始在警报服务中振动。每次闹铃响起,我都会发出声音并开始在这项服务中振动。这是我的代码

Vibrator v = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);
long milliseconds = 500;
v.vibrate(milliseconds);

MediaPlayer mp = MediaPlayer.create(this, R.raw.normal);
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {
  public void onCompletion(MediaPlayer mp) {
        // TODO Auto-generated method stub
        mp.release();
    }
});
PowerManager pm = (PowerManager) this
            .getSystemService(Context.POWER_SERVICE);
mWakelock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
            | PowerManager.ACQUIRE_CAUSES_WAKEUP, "AlarmScreen");
mWakelock.acquire(120000);

问题是,有时它可以正常工作,但有时它会不断振动,只有在我打开屏幕时才会停止。

3 个答案:

答案 0 :(得分:1)

尝试以这种方式使用......

    Vibrator v = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
    v.vibrate(2000); 

删除:

    this. 

一切都会好起来

答案 1 :(得分:0)

问题不在于你用来振动设备的代码,它可能是调用振动的代码。我猜你是在某种触发振动的循环中。你能展示用于开始振动的代码吗?

答案 2 :(得分:0)

您可以使用延迟强制停止振动

final Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(2000);

final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
    //Do something after 2000ms (avoid random vibrations)
    v.cancel();
    }
}, 2000);