对于我的Android应用程序,我从不希望手机锁定或背光灯关闭
答案 0 :(得分:209)
在onCreate()
中的setContentView()之后添加一行代码public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_flag);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
答案 1 :(得分:113)
这里已经存在很多答案!我正在通过其他可靠的解决方案回答这个问题:
使用PowerManager.WakeLock
并不是一个可靠的解决方案,因为该应用需要额外的权限。
<uses-permission android:name="android.permission.WAKE_LOCK" />
此外,如果意外地保持唤醒锁定,它可以使屏幕保持开启状态。
因此,我建议不要使用PowerManager.WakeLock
解决方案。而不是这个,使用以下任何解决方案:
首先:
我们可以在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
setKeepScreenOn()
实现1。:
@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
备注(一些有用的点):
答案 2 :(得分:99)
使用 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();
}
}
使用清单文件中的以下权限:
<uses-permission android:name="android.permission.WAKE_LOCK" />
希望这能解决你的问题......:)
答案 3 :(得分:46)
请勿使用唤醒锁定。
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状态..
可能因您的需求而异[{3}}
答案 4 :(得分:15)
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow
是为活动定义的方法,不需要您首先找到View
。
答案 5 :(得分:13)
看一下这个讨论Force Screen On
hackbod有一个很好的答案。
答案 6 :(得分:10)
您只需使用View类中的setKeepScreenOn()
即可。
答案 7 :(得分:7)
在要保持屏幕的活动的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>
答案 8 :(得分:4)
您需要使用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();
答案 9 :(得分:4)
有多种方法可以做到:
解决方案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);
}
答案 10 :(得分:1)
此时方法
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);
答案 11 :(得分:1)
无需添加权限和做技巧。只需在主布局中使用以下文字即可。
android:keepScreenOn="true"