android:我们应该使用哪个wake_lock

时间:2014-02-04 05:40:19

标签: android

android文档说我应该使用

  

WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON

而不是

  

PowerManager.SCREEN_DIM_WAKE_LOCK。链接为here

但是当我尝试使用它时,我得到一个异常,说它是一个无效的锁定级别。我正在使用API​​级别18,这是失败的代码。

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
            PowerManager.WakeLock wl = pm.newWakeLock(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, "My Tag");

有人试过这个吗?它有效吗?

2 个答案:

答案 0 :(得分:2)

根据API文档,应该使用Window.addFlags()来保持屏幕。

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

答案 1 :(得分:0)

以下代码工作正常,请查看

import android.os.PowerManager;

public class MyActivity extends Activity {

    protected PowerManager.WakeLock mWakeLock;

    @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" />