Android闪烁屏幕

时间:2014-04-21 14:03:27

标签: android broadcastreceiver

我的客户有这个要求,他希望手机在收到通知时老手机闪烁(记住旧的诺基亚1100)。好吧,我从来没有见过Android手机这样做,所以我甚至不确定是否可以做到。

我认为可以通过反复调暗和照亮屏幕灯来完成类似的事情。这是我的代码:

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

问题是,因为我在广播接收器上没有" getWindow()"方法。

无论如何,你认为这是一个简单的方法吗?也许我甚至没有接近正确的方式。

2 个答案:

答案 0 :(得分:0)

对于你的BroadcastReceiver,你错过了一个重要的观点。 BroadcastReceiver根本不打算进行非常多的处理 - 事实上,它做得越少越好。另外,你永远不知道接收器应用程序是否在后台 - 在Android框架中询问接收器的窗口是没有意义的。

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

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

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


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

您甚至可能喜欢GoogWare for CommonsWare WakefulIntentService,但可能不完全是您在这种情况下所需要的。

答案 1 :(得分:0)

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