[英]How to make screen flashing/blinking from background service on Android device?
我計划進行后台服務,這將使屏幕閃爍/閃爍,直到用戶觸摸屏幕。
我不知道如何使屏幕閃爍的方法 - 只有通過生成活動可以通過亮度和控制來學習的方法。
想要在屏幕上進行閃爍換色,即黑白或屏幕開/關,使其比亮度更明顯。
我用它來屏幕閃爍,在這段代碼中我的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);
當您觸摸scree或按鈕以清除動畫時,添加此代碼。
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鍵盤保護 ),然后推的Activity
,這是全黑的,那么更改Activity
白上Timer
或一個Thread
像以前一樣。 還有更多工作要做。
請記住在AndroidManifest.xml
獲得權限:
<uses-permission android:name="android.permission.WAKE_LOCK" />
如果您沿着該路線KeyGuard
則需要額外的權限來解鎖KeyGuard
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.