Android APK开发干货5之系统(52)—— 亮灭屏

android 设置系统屏幕背光时间或锁屏间隔时间

/** 
 * 获得锁屏时间  毫秒 
 */  
  private int getScreenOffTime(){  
    int screenOffTime=0;  
    try{  
        screenOffTime = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT);  
    }  
    catch (Exception localException){  
          
    }  
    return screenOffTime;  
  }  
  
  
/** 
 * 设置背光时间  毫秒 
 */  
  private void setScreenOffTime(int paramInt){  
    try{  
          Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, paramInt);  
        }catch (Exception localException){  
          localException.printStackTrace();  
        }  
  }  

常用技巧

应用开启时间保持屏幕常亮

1、创建serive监听系统灭屏广播,如:ScreenService

public class ScreenService extends Service {
    String tag = "060_ScreenService";

    @Override
    public IBinder onBind(Intent arg0) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Log.e(tag, "onCreate");

        /* 注册屏幕唤醒时的广播 */
        IntentFilter mScreenOnFilter = new IntentFilter("android.intent.action.SCREEN_ON");
        ScreenService.this.registerReceiver(mScreenOReceiver, mScreenOnFilter);

        /* 注册机器锁屏时的广播 */
        IntentFilter mScreenOffFilter = new IntentFilter("android.intent.action.SCREEN_OFF");
        ScreenService.this.registerReceiver(mScreenOReceiver, mScreenOffFilter);
    }

    public void onDestroy() {
        super.onDestroy();
        ScreenService.this.unregisterReceiver(mScreenOReceiver);
    }

    /**
     * 锁屏的管理类叫KeyguardManager,
     * 通过调用其内部类KeyguardLockmKeyguardLock的对象的disableKeyguard方法可以取消系统锁屏,
     * newKeyguardLock的参数用于标识是谁隐藏了系统锁屏
     */
    private BroadcastReceiver mScreenOReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();

            if (action.equals("android.intent.action.SCREEN_ON")) {
                Log.e(tag, "—— SCREEN_ON ——");

            } else if (action.equals("android.intent.action.SCREEN_OFF")) {
                Log.e(tag, "—— SCREEN_OFF ——");
                screenOn();
            }
        }

    };

    /**
     * 亮屏
     */
    public void screenOn() {
        // turn on screen
        PowerManager mPowerManager = (PowerManager) getSystemService(POWER_SERVICE);
        PowerManager.WakeLock mWakeLock = mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag");
        mWakeLock.acquire();
        mWakeLock.release();
    }

    /**
     * 灭屏
     */
    private void screenOff(){
        DevicePolicyManager policyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
//        ComponentName adminReceiver = new ComponentName(AppIdleActivity.this, ScreenOffAdminReceiver.class);
//        boolean admin = policyManager.isAdminActive(adminReceiver);
//        if (admin) {
//            policyManager.lockNow();
//        } else {
//            Toast.makeText(this,"没有设备管理权限",
//                    Toast.LENGTH_LONG).show();
//        }
    }
}

2、在配置文件中增加系统权限
    +<uses-permission android:name="android.permission.WAKE_LOCK" />

3、在Application全局启动该service,全局监听。
 //启动应用级的service
 startService(new Intent(getApplicationContext(), ScreenService.class));

猜你喜欢

转载自blog.csdn.net/haobobo710/article/details/82463067