android - 设备休眠时警报触发的振动不会停止

标签 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);
    }
}

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

最佳答案

终于想通了。我无害的“ toast ”在振动之前被触发,导致振动器挂起,直到 toast 完成。 Toast 直到屏幕打开才显示,这以某种方式阻止了振动的完成。移除 Toast 解决了我的问题,即使在屏幕关闭的情况下,振动也会在两秒后按预期停止。

关于android - 设备休眠时警报触发的振动不会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18346286/

相关文章:

android - 安卓和PC之间的USB通信

android: 使用 AlarmManager 运行后台任务

android - 无法让 AlarmManager 和广播正常工作

android - 如何触发声音输入的振动?

android - 为什么 AudioManager.getRingerMode() 只返回 3 种模式?

java - "android-support-v4"多个库冲突

android - android 5 onInterceptTouchEvent 模块中的 SwipeRefreshLayout.java 没有中断

java - ExpandableListView 中的 Android 数据绑定(bind)

java - 我想设置一个通知,当我收到通知时它应该响铃

java - 屏幕关闭/锁定后手机振动停止工作