设备处于睡眠状态时由警报触发的振动不会停止

时间:2013-08-20 22:59:33

标签: android alarmmanager android-vibration

我很想知道这是否特定于我的设备(Nexus 4,Android 4.3,股票ROM),但我有一个警报,通过AlarmManager注册一次。触发后,设备将振动两秒钟。如果在设备开启时触发警报,则它会正确振动两秒钟。但是,如果在设备关闭(和拔下插头)时触发警报,则振动开始,但在按下电源按钮(唤醒设备)之前不会停止。以下是注册警报的代码:

public static void registerAlarm(Context context, int uniqueId, long triggerAlarmAt)
{
    Intent intent = new Intent(context, AlarmReceiver.class);
    intent.setAction("com.myapp.ALARM_EVENT");
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context.getApplicationContext(), uniqueId, intent, 0);
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, triggerAlarmAt, pendingIntent);
}

接收者代码:

public class AlarmReceiver extends BroadcastReceiver
{

    @Override
    public void onReceive(Context context, Intent arg1)
    {
        Toast.makeText(context, "Test of alarm", Toast.LENGTH_LONG).show();
        Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
        vibrator.vibrate(2000);
    }
}

关于为什么会发生这种情况或如何防止它的任何想法?

1 个答案:

答案 0 :(得分:1)

最后想出了这个。我的无害'Toast'在振动之前被触发,导致振动器一直悬挂直到吐司完成。在屏幕打开之前,Toast没有显示,这以某种方式阻止了振动的完成。移除Toast解决了我的问题,即使屏幕关闭,振动也会在预期的两秒后停止。