5

我计划做后台服务,这将使屏幕闪烁/闪烁,直到用户触摸屏幕。

我不知道如何使屏幕闪烁的方法 - 只有学到的知识可以通过产生的活动通过亮度和控制来完成。

想要通过屏幕上的颜色变化进行闪烁,即黑白或屏幕开/关,使其比亮度更明显。

4

2 回答 2

13

我用它来闪烁屏幕,在这段代码中,我的 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();
于 2013-01-21T09:59:36.773 回答
4

从您的服务中,您可以与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完全黑色的按钮,然后像以前一样将 a或 a更改Activity为 White 。更多的工作。TimerThread

请记住在以下位置获得许可AndroidManifest.xml

<uses-permission android:name="android.permission.WAKE_LOCK" />

KeyGuard如果您沿着那条路线进行解锁,则需要额外的权限。

于 2013-02-01T16:43:12.743 回答