【发布时间】:2014-07-16 01:24:02
【问题描述】:
我打算做一个后台服务,这将使屏幕闪烁/闪烁,直到用户触摸屏幕。
我不知道如何让屏幕闪烁 - 只知道可以通过生成的活动通过亮度和控制来完成的知识。
想要通过屏幕上的颜色变化进行闪烁,即黑白或屏幕开/关,以使其比亮度更明显。
【问题讨论】:
我打算做一个后台服务,这将使屏幕闪烁/闪烁,直到用户触摸屏幕。
我不知道如何让屏幕闪烁 - 只知道可以通过生成的活动通过亮度和控制来完成的知识。
想要通过屏幕上的颜色变化进行闪烁,即黑白或屏幕开/关,以使其比亮度更明显。
【问题讨论】:
我用它来闪烁屏幕,在这段代码中我的 relativeLayout (HomeLayout) 会闪烁。
Animation animation = new AlphaAnimation(1, 0); // Change alpha
// from fully
// visible to
// invisible
animation.setDuration(500); // duration - half a second
animation.setInterpolator(new LinearInterpolator()); // do not alter
// animation
// rate
animation.setRepeatCount(Animation.INFINITE); // Repeat animation
// infinitely
animation.setRepeatMode(Animation.REVERSE); // Reverse animation at
// the
// end so the layout will
// fade back in
relativeLayout.startAnimation(animation);
添加此代码,当您触摸屏幕或按钮以清除动画时。
relativeLayout.clearAnimation();
【讨论】:
通过您的服务,您可以与WakeLock 进行交互:
通过以下方式获取WakeLock:
PowerManager powerMan = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = powerMan.newWakeLock(
PowerManager.SCREEN_DIM_WAKE_LOCK |
PowerManager.ACQUIRE_CAUSES_WAKEUP, "wakelockTag");
然后打开屏幕:
wakeLock.acquire();
然后再次将其关闭:
wakeLock.release();
您可以将其放入带有睡眠的Thread 或使用Timer 来创建闪存。
例如:
new Thread() {
public void run() {
boolean screenOn = false;
for (int i = 0; i < 5; i++) {
try {
sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (screenOn) {
wakeLock.acquire();
} else {
wakeLock.release();
}
}
}
}.run();
它不会是黑/白,只是开/关。
如果你想变成黑色/白色,你还必须解除KeyLock(查找Android Keyguard),然后按下完全黑色的Activity,然后更改Activity 到 Timer 或 Thread 上的 White 和以前一样。更多的工作。
记得在AndroidManifest.xml获取权限:
<uses-permission android:name="android.permission.WAKE_LOCK" />
如果您沿着那条路线解锁KeyGuard,则需要额外的权限。
【讨论】: