Android闪烁屏幕



我的客户有这样的要求,他希望手机在收到通知时像旧手机一样闪烁(记住旧的诺基亚1100)。嗯,我从来没有见过安卓手机这样做,所以我甚至不确定这能不能做到。

我想可以通过反复调暗和调亮屏幕来实现类似的效果。这是我的代码:

WindowManager.LayoutParams params = getWindow().getAttributes();
            params.screenBrightness = -1;
            getWindow().setAttributes(params);

问题是,由于我使用的是broadcastReceiver,所以没有"getWindow()"方法。

不管怎样,你认为有简单的方法吗?,也许我甚至没有走正确的路。

对于BroadcastReceiver,您缺少了一个关键点。BroadcastReceiver根本不意味着要做太多处理——事实上,它做得越少越好。此外,你永远不知道接收器应用程序是否在后台——在Android框架中,向接收器索要窗口是没有意义的。

IMHO BroadcastReceiver在那里纯粹是为了接收意图,并将其直接传递到ActivityService(在极少数情况下传递给Application对象本身)。

因此,在您的情况下,应该使用BroadcastReceiver来启动Activity,这可能是一个透明的活动。在里面,你可以设置一个动画,循环黑色背景和透明背景的alpha值。这可能会让你眨眼。

重点是:不要在BroadcastReceiver中进行处理。如果你遵循这种方法,你会发现Activity.getWindow()方法正是你所需要的。


关于闪烁屏幕-如果你想在手机睡着时唤醒手机,并以这种方式打开屏幕,那么你需要阅读唤醒锁。不幸的是,关于它们如何工作的完整教程确实超出了这个问题的范围,但这应该会引导你朝着正确的方向前进。

你甚至可能喜欢在谷歌上搜索CommonsWare的WakefulIntentService,但在这种情况下可能并不完全是你需要的。

如果有其他人遇到这个问题,下面是我"解决它"的方法。我使用了一种简单得多的方法,因为我认为打开和关闭屏幕在性能方面是一项昂贵的任务,甚至可能耗尽电池。所以,现在我只是调用另一个活动,打开屏幕并禁用锁定屏幕。这个新活动有一个句柄,可以在黑色和白色值之间切换布局背景。这模拟了眨眼。问题解决了!。

最新更新