【问题标题】:Notifying when screen is off屏幕关闭时通知
【发布时间】:2010-02-07 16:36:44
【问题描述】:

我正在尝试生成一个通知,该通知会在屏幕关闭(CPU 关闭)时振动手机并播放声音。根据日志消息,正在发送通知,但手机没有振动或播放声音,直到我再次打开屏幕。我尝试持有一个 2 秒的临时唤醒锁 (PowerManager.PARTIAL_WAKE_LOCK),我认为这将是播放通知的充足时间,但唉,它仍然没有。

有任何指针可以让通知可靠运行吗?我正在运行 Android 1.6 的 G1 上对此进行测试。

我正在使用的代码:

notif.vibrate = new long[] {100, 1000};
notif.defaults |= Notification.DEFAULT_SOUND;

notif.ledARGB = Color.RED;
notif.ledOnMS = 1;
notif.ledOffMS = 0;
notif.flags = Notification.FLAG_SHOW_LIGHTS;

notif.flags |= NOTIF_FLAGS; //static var

if (!screenOn) { //var which updates when screen turns off/on
    mWakeLock.acquire(2000); 
}

manager.notify(NOTIF_ID, notif);

【问题讨论】:

  • 您是否尝试过部署到真实设备上?也许模拟器在通知唤醒方面有问题。

标签: android notifications


【解决方案1】:

您可以制作自己的接收器,扩展到BroadcastReceiver,它可以在接收到INTENT.ACTION_SCREEN_OFF时执行您的通知

@Override 
public void onReceive(Context context, Intent intent) {
  Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
  long milliseconds = 1000;  
    if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
        // vibrate the phone
            v.vibrate(milliseconds);
        // any other code here            
     }   
}

【讨论】:

  • 通知不需要在屏幕关闭时显示,在socket断开时显示。
  • 我删除了通知评论,但尝试看看上面的代码是否适合你。由于我不知道您的代码看起来如何,因此这可能会有所帮助或多余
  • 通知已经使用 notification.vibrate = new long[] {100, 1000} 设置了振动选项。通知可以在我的应用程序运行时随时显示,问题是屏幕关闭时通知不会播放。发送屏幕关闭广播时,我不需要对通知执行任何操作。
  • 我只是使用上面的代码来确保你可以接收到意图然后使用振动,但是你能发布有问题的代码以便我看看发生了什么吗?
  • 已添加代码。当套接字断开连接时,我收到了对我的方法的调用,这反过来又导致了我发布的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 2012-06-01
  • 1970-01-01
相关资源
最近更新 更多