如何在应用程序中保持屏幕处于打开状态?

对于我的 Android 应用程序,我从不希望手机锁定或关闭背光

151347 次浏览

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

最有可能的是你对 完全 _ WAKE _ LOCK感兴趣:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag");
wl.acquire();
....
wl.release();

使用 超能力经理,醒醒锁类执行此操作。 请参阅以下代码:

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

在清单文件中使用以下权限:

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

希望这能解决你的问题... :)

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

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

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

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

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

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

此外,如果它意外地保持唤醒锁,它可以离开屏幕上。

因此,我建议不要使用 PowerManager.WakeLock解决方案,而是使用以下任何一种解决方案:

第一:

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

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

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

注意事项(一些有用的资料) :

  1. 在 Main/Root/Parent 视图中使用 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"可以做同样的事情,而不需要额外的代码。但它仍将保持在保持屏幕上的国家。.

它可以根据您的需求而变化

在希望保持屏幕开启的活动的 XML 中添加 android:keepScreenOn="true"是最佳选择。将该行添加到活动的主布局中。

就像这样

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:keepScreenOn="true">


...


</LinearLayout>

此时的方法

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

不需要添加权限和做技巧。只需使用下面的文字在您的主要布局。

  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 的开发环境中非常有用。

另外,关闭活动时一定要关闭屏幕,你可以这样做:

public void onDestry() {
getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}