對於我的Android應用程序,我從不希望手機鎖定或背光燈關閉如何將屏幕保持在我的應用程序中?
回答
使用PowerManager.WakeLock類序執行此。 請看下面的代碼:
import android.os.PowerManager;
public class MyActivity extends Activity {
protected PowerManager.WakeLock mWakeLock;
/** Called when the activity is first created. */
@Override
public void onCreate(final Bundle icicle) {
setContentView(R.layout.main);
/* This code together with the one in onDestroy()
* will make the screen be always on until this Activity gets destroyed. */
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
this.mWakeLock.acquire();
}
@Override
public void onDestroy() {
this.mWakeLock.release();
super.onDestroy();
}
}
使用清單文件的follwing權限:
<uses-permission android:name="android.permission.WAKE_LOCK" />
希望這將解決您的問題... :)
不應該在'onResuem'和'onPause'這樣的應用程序不會保持屏幕當用戶點擊主頁按鈕? – 2011-09-23 03:29:50
PowerManager pm是否必須聲明爲final? – 2012-10-31 00:53:22
對於@SethHikari提出的問題不太好的建議。太多的工作,消耗太多的CPU功耗。 – Ewoks 2013-06-19 13:18:18
您需要使用Power Manager才能在應用程序中獲取喚醒鎖。
最可能的是你有興趣在一個FULL_WAKE_LOCK:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag");
wl.acquire();
....
wl.release();
您可以簡單地使用View類中的setKeepScreenOn()
。
添加的setContentView()中的onCreate(後)一行代碼
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_flag);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow
是活動定義的方法,而不會要求你找到一個View
第一。
與@ hackbod的解決方案相同:http://stackoverflow.com/a/2134602/435605 – 2013-12-29 13:16:18
謝謝@kilaka :) – 2013-12-30 05:13:54
很多答案已經存在!我正在用附加的和可靠的解決方案回答這個問題:
使用PowerManager.WakeLock
不是一個可靠的解決方案,因爲該應用程序需要額外的權限。
<uses-permission android:name="android.permission.WAKE_LOCK" />
此外,如果它意外地保持喚醒鎖,它可以離開屏幕。
因此,我建議不要使用PowerManager.WakeLock
解決方案。取而代之的是,使用任何以下解決方案:
第一:
我們可以在onCreate()
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
第二次使用getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
:
我們可以使用keepScreenOn
1。實施Java代碼使用setKeepScreenOn()
:
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
View v = getLayoutInflater().inflate(R.layout.driver_home, null);// or any View (incase generated programmatically)
v.setKeepScreenOn(true);
setContentView(v);
}
文檔http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)
2.添加keepScreenOn
到XML佈局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true" >
http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn文檔
註釋(一些有用的點S):
- 這不要緊,
keepScreenOn
應該在主/根/父視圖中使用。它可以與任何子視圖一起使用,並且將以與父視圖相同的方式工作。 - 唯一重要的是視圖的可見性必須可見。否則,它不會工作!
是的,它應該是正確的答案!我正在尋找一個實施「keepScreeOn」(我認爲這是實現這個目標的最佳方法)的例子,這是唯一能夠很好地展示它的答案! – 2014-01-23 19:29:51
不需要該權限。 – mhdjazmati 2017-01-11 14:10:53
v.setKeepScreenOn(true);精彩的M sdk手機上的作品,沒有檢查Ls的' – CodeToLife 2017-02-12 16:05:56
請勿使用喚醒鎖。
It requires permission and other stuff and may cause error if you forget to set it in right time.
最簡單的方法是,當你要保持你的屏幕上使用下面的代碼..
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
任一方式,如果你想刪除或終止keep_Screen_on
答案getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
你還可以看到here ..
和the best and easiest way
..在活動的佈局根目錄中使用android:keepScreenOn="true"
可以在沒有額外代碼的情況下執行相同的操作。但是,它仍將它Keep_Scree_on國..
它可以在你的需求See here
工程很棒。我還清除了onStop中的標誌,因此屏幕上的狀態在我的應用程序外部像往常一樣運行。出於某種奇怪的原因,它似乎沒有這樣做,但似乎是正確的方式來做它無論如何,以確保我會離開它(也許它不同於其他手機比我的Nexus 5)。 – riper 2015-01-06 14:39:26
在你想保留在屏幕上是最好的選擇活動(一個或多個)的XML添加android:keepScreenOn="true"
被改變。將該行添加到活動的主佈局。
像這樣的事情
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true"
android:orientation="vertical"
tools:context="${relativePackage}.${activityClass}" >
...
</LinearLayout>
適合我,thx。 – 2015-12-03 18:51:22
此時方法
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
this.mWakeLock.acquire();
已被棄用。
您應該使用 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
和getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
<uses-permission android:name="android.permission.WAKE_LOCK" />
必須有,如果你想將其設置爲
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
我測試過了,但是權限不是必需的。 – 2015-06-19 07:44:09
你是完全正確的,我的錯誤忘記清理/重建項目,同時測試... – Proxytype 2015-06-19 21:22:01
無需添加權限和做花樣。只需在主佈局中使用以下文本即可。
android:keepScreenOn="true"
嘗試這個我們可以做到多種方式在那些
解決方法1:
class MainActivity extends AppCompactActivity{
@Override
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
}
溶液2:
在activity_main.xml中文件只需添加
<android:KeepScreenOn="true"/>
我的建議是請不要使用WakeLock,如果你使用這個,你將會定義額外的許可 ,而且這個東西大多在cpu的開發環境中很有用。
,並確保在關閉活動
關閉屏幕,您可以通過這種方式
pubic void onDestry(){
getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
有這樣的建議/答案已經存在 – user7294900 2017-07-23 06:39:28
- 1. 我的應用程序保持屏幕
- 2. Android保持屏幕在應用程序
- 3. 如何在android中將應用程序設置爲屏幕保護程序?
- 4. 保持Android應用程序在屏幕上的超時活動
- 5. 如何在Android應用程序中支持多屏幕大小
- 6. 即使屏幕在Android中關閉,如何保持應用程序狀態?
- 7. 在應用程序屏幕上保持廣告/橫幅靜態
- 8. 如何將我的輸入保持在同一屏幕位置?
- 9. 屏幕在我們的應用程序運行時保持解鎖狀態
- 10. 如何在應用程序運行時始終保持Android屏幕亮度
- 11. 將Java應用程序轉換爲Windows屏幕保護程序
- 12. iPhone應用內屏幕保護程序
- 13. 我如何在android中啓動應用程序信息屏幕?
- 14. 屏幕關閉後保持應用程序活動
- 15. 檢測當應用程序保持屏幕
- 16. iPhone主屏幕Web應用程序和保持登錄
- 17. 屏幕鎖定時保持WP7應用程序運行
- 18. 如果我的應用程序處於活動狀態,如何屏蔽主鍵? (屏幕保護程序,鎖屏)
- 19. 使用屏幕在shell腳本中保持程序活動
- 20. 如何使應用程序,它支持所有的屏幕
- 21. 如何使用引腳和間距將屏幕中心保持在與屏幕尺寸無關的屏幕上
- 22. 如何在C#中調用Windows中的屏幕保護程序?
- 23. 保持在的LinearLayout屏幕
- 24. 讓我的應用程序的屏幕長於設備屏幕
- 25. 如何使用ProgressDialog保持屏幕?
- 26. 如何在網頁上保持屏幕
- 27. 如何在Android上保持屏幕?
- 28. 如何讓Android應用程序支持所有設備屏幕?
- 29. 將手機屏幕保持在Cocos2dx上
- 30. 我的Android應用程序不加載應用程序屏幕,只是跳到主應用程序屏幕?
有在這個崗位更好的解決方案做到這一點: 的http://計算器。 com/questions/4807634/disable-keep-screen-on – Derzu 2012-02-25 05:01:20
http://stackoverflow.com/a/16015358/1318946 – 2013-09-11 13:32:05