Android中監聽鎖屏變化和防止鎖屏

Android app中可能存在某些可視化耗時操做,須要防止鎖屏。html

1、監聽鎖屏

添加權限android

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

首先來看如何監聽鎖屏,使用BroadcastReceivercaset來監聽eclipse

1.鎖屏監聽ide

public class ScreenBroadcastReceiver extends BroadcastReceiver {
 
    private static final String TAG = "ScreenBroadcastReceiver";
 
    @Override
    public void onReceive(Context context, Intent intent) {
 
        Log.i(context.getClass().getSimpleName(), intent.getAction());
         
        if(Intent.ACTION_USER_PRESENT.equals(intent.getAction())){  // 解鎖時
             
             
        }else if(Intent.ACTION_SCREEN_OFF.equals(intent.getAction())){ // 鎖屏時
             
        }
    }
 
}

從上得知,註冊鎖屏狀態監聽廣播須要2個Action,工具

Intent.ACTION_USER_PRESENT 和 Intent.ACTION_SCREEN_OFF.

 

2、阻止鎖屏

方法一,修改window的flag學習

getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

 

方式二,使用SDK 電源管理器PowerMangerKeyguardManager工具ui

參考:Android屏幕保護KeyguardManager相關內容學習spa

Android保持屏幕常亮的幾種方法.net

//onResume  中啓用
  wakeLock = ((PowerManager) getSystemService(POWER_SERVICE))
                .newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK
                        | PowerManager.ON_AFTER_RELEASE, TAG);
  wakeLock.acquire();

//onPause 中禁用
  if (wakeLock != null) {
    wakeLock.release();
  }

此方法須要添加以下權限

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

方法三,修改系統settings(不推薦,開啓後屏幕一直保持開啓,還得手動修改settings)

ContentResolver mContentResolver = getContentResolver();  
android.provider.Settings.Secure.putInt(mContentResolver, android.provider.Settings.Secure.LOCK_PATTERN_ENABLED,false);

 //但注意要加權限AndroidManifest.xml文件中加入 ,所以,系統須要root才行

  //<uses-permission android:name="android.permission.WRITE_SETTINGS" />  
    //還要特別注意的是要加入 android:sharedUserId="android.uid.system",但有一個問題,  
    //若是加入了sharedUserId後就不能使用eclipse編譯了,必定要手動經過 mm -B進行編譯,而後把apk install到模擬器或設備中

方法4、配置keepScreenOn

在某些android高版本的View的中,有這樣的屬性(強烈推薦),能夠進行配置

android:keepScreenOn="true"

try doing it

 

3.參考文章

New UI-妙用view的keepScreenOn屬性保持屏幕常亮

Android屏幕保護KeyguardManager相關內容學習

Android保持屏幕常亮的幾種方法

相關文章
相關標籤/搜索