我如何将屏幕保持在我的应用程序?

对于我的Android应用程序,我不希望手机locking或背光closures

使用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" /> 

希望这会解决你的问题… 🙂

在onCreate()的setContentView()之后添加一行代码

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_flag); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } 

这里已经有很多答案了! 我用更多可靠的解决scheme来回答这个问题:

使用PowerManager.WakeLock不是一个可靠的解决scheme,因为应用程序需要额外的权限。

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

而且,如果意外地保持了唤醒locking,它可以离开屏幕。

所以,我build议不要使用PowerManager.WakeLock解决scheme。 而不是这个,使用以下任何解决scheme:

第一:

我们可以使用getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);onCreate()

 @Override protected void onCreate(Bundle icicle) { super.onCreate(icicle); 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" > 

Google文件http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn

注意事项(一些有用的观点):

  1. 在主/根/父视图上使用keepScreenOn并不重要。 它可以与任何子视图一起使用,并且将以与父视图相同的方式工作。
  2. 唯一重要的是视图的可见性必须可见。 否则,它将无法正常工作!

不要使用唤醒锁。

 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); 

你也可以在这里看到..

the best and easiest way 。在活动的布局根目录中使用android:keepScreenOn="true"在没有额外的代码的情况下做同样的事情。 但它将保持在Keep_Scree_on状态。

它可以根据您的需求而变化请参阅此处

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

getWindow是为活动定义的方法,并不会要求您先查找View

看看这个讨论力量屏幕上

hackbod有一个很好的答案。

您可以简单地使用View类中的setKeepScreenOn()

在要保持屏幕的活动的XML中添加android:keepScreenOn="true"是最佳select。 将该行添加到活动的主要布局。

像这样的东西

 <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> 

您需要使用电源pipe理器来获取应用程序中的唤醒锁。

很可能你对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(); 

在这一点上的方法

 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);

试试这个我们可以在多个方面做到这一点

解决方法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"/> 

我的build议是请不要使用WakeLock,如果你使用这个,你将会定义额外的权限,而且这个东西大多在cpu的开发环境中很有用。

并确保closures活动时closures屏幕

你可以这样做

  pubic void onDestry(){ 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); 

没有必要添加权限和做技巧。 在主布局中使用下面的文本。

  android:keepScreenOn="true"