1. 程式人生 > >妙用View的keepScreenOn保持螢幕常亮,android螢幕常亮

妙用View的keepScreenOn保持螢幕常亮,android螢幕常亮

①通過PowerManager.WakeLock實現:

step 1:獲得系統PowerManager物件,接著通過newWakeLock方法,建立WakeLock例項

step 2:為了不影響其他app,我們通常把保持常亮方法onResume()方法中,而把取消常亮

           方法放到onPause()方法中

step 3:還需要在AndroidManifest.xml檔案中新增許可權,另外安裝的時候會提示,是否允許

           使用禁止休眠功能!許可權如下:

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

簡單使用程式碼如下:
//獲得系統POWER_SERVICE物件
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
//通過newWakeLock()方法建立WakeLock例項  
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "這裡隨便你寫,一個TAG而已");  
//最好是放到onReusme方法呼叫
wl.acquire();
//最好是放到onPause方法呼叫    

wl.release();

對於newWakeLock的第一個引數,有以下選擇:

PARTIAL_WAKE_LOCK:保持CPU 運轉,螢幕和鍵盤燈有可能是關閉的。 SCREEN_DIM_WAKE_LOCK:保持CPU 運轉,允許保持螢幕顯示但有可能是灰的,允許關閉鍵盤燈 SCREEN_BRIGHT_WAKE_LOCK:保持CPU 運轉,允許保持螢幕高亮顯示,允許關閉鍵盤燈 FULL_WAKE_LOCK:保持CPU 運轉,保持螢幕高亮顯示,鍵盤燈也保持亮度

②直接通過getWindow().addFlags實現

這個的話就比較簡單了,哪個activity要用,就在onCreate()方法中新增下面的程式碼:

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

而且不需要新增許可權,網上很多都是坑,只有設定常亮,怎麼關都不說,越來越發現谷哥比度娘好用了!

addFlags( )直譯新增標記,那麼,要取消常亮不就只需要我們清除標記麼,所以只需要把addFlags改為

clearFlags( )即可!參考程式碼如下:

package com.jay.example.keepscreenondemo;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.Button;

public class MainActivity extends Activity {

	private Button btnclose;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnclose = (Button) findViewById(R.id.btnclose);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
        //點選按鈕後,清除標記,螢幕常亮效果就消失了
        btnclose.setOnClickListener(new OnClickListener() {			
			@Override
			public void onClick(View view) {
				getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);				
			}
		});
    }
}


3)妙用View元件的keepScreenOn實現螢幕常亮:

前面囉囉嗦嗦地介紹了兩種保持螢幕常亮的方法,好像偏題了哈,這節要講的是KeepScreenOn屬性;

不過也沒什麼啦,順道學多2個方法哈!使用keepScreenOn屬性非常簡單

step 1:在你需要常亮的Activity對應的佈局檔案中,隨便給一個UI元件設定:android:keepScreenOn="true"

           然後,只要Activity不被停止的話,那麼螢幕會一直保持常亮哦!

step 2:怎麼關閉常亮麼?也很簡單啊~在你需要關閉常亮的時候,修改UI元件的屬性,把他設定為false就可以了

           相比起前面的兩個來說,這個是不是更加方便呢?見仁見智了!

也貼下簡單的使用程式碼吧:

main.xml:

<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:orientation="vertical"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/btnclose"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="關閉常亮" />

    <TextView
        android:id="@+id/txtliang"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:keepScreenOn="true"
        android:text="我就是這麼亮" />

</LinearLayout>

MainActvitiy.java
package com.jay.example.keepscreenondemo;

import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

	private Button btnclose;
	private TextView txtliang;
	private int flag = -1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnclose = (Button) findViewById(R.id.btnclose);
        txtliang = (TextView) findViewById(R.id.txtliang);
        
        btnclose.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				if(flag == -1)
				{
					txtliang.setKeepScreenOn(false);
					txtliang.setText("我亮不起來了=-=");
					btnclose.setText("亮");
				}
				else 
				{
					txtliang.setKeepScreenOn(true);
					txtliang.setText("我又亮了^-^");
					btnclose.setText("不亮");
				}
			}
		}); 
    }
}

最後說幾句:

①常亮的前提是你不按電源鍵哈~~~一按肯定黑屏,(*^__^*) ...

②程式碼比較簡單,就不貼了,另外上面的多是螢幕常亮的,效果圖就不貼了

自己手機調省電模式,螢幕超時調成15s,接著晾一邊,接著自己測測就知道了!


相關推薦

View的keepScreenOn保持螢幕android螢幕

①通過PowerManager.WakeLock實現: step 1:獲得系統PowerManager物件,接著通過newWakeLock方法,建立WakeLock例項 step 2:為了不影響其他app,我們通常把保持常亮方法onResume()方法中,而把取消常亮

overflow--去除默認滾動條內容仍可滾動

parent wid 文本 borde 去除 -- blog border 溢出 在開發中我們往往要去除默認滾動條,但是其在豎直方向的滾動效果仍然需要。 <div id="parent"> <div id="child">

Julia: “.juliarc.jl” 的:設定IDE啟動時自動執行某檔案或某行命令

    此文先感謝JuliaLangQQ群一個朋友的幫助!     比如在用Juno時,需要匯入一些檔案的路徑,作為工作目錄。這些檔案其實,不需要在Juno啟動時,進行人工啟動,完全可以設定為自動模式。也即順帶在啟動julia.exe後,也自動執行一下某些命令或一些檔案,這

Intellij IDEA 建立臨時檔案Git 跟蹤不到的那種

| **好看請贊,養成習慣** > - 你有一個思想,我有一個思想,我們交換後,一個人就有兩個思想 > > - If you can NOT explain it simply, you do NOT understand it well enough 現陸續將Demo程式碼和技術文

Android最便捷的螢幕適配堪稱螢幕適配終結者

效果圖 最大幅度解決適配問題,並且最大化方便開發者。 so,看下用法: 你沒有看錯,拿到設計稿,在佈局檔案裡面直接填寫對應的px即可,px:這裡的px並非是Google不建議使用的px,在內部會進行轉化處理。 ok,拿一些實際專案的頁面,看下不同解析度下的效果: 左為:

android 保持螢幕和喚醒螢幕的方式

一、引言 Android開發中會用到將應用的螢幕保持常亮,比如播放視訊、音樂等,如果總是使用者去觸控式螢幕幕來保持螢幕常亮,那麼使用者體驗會很差; 二、實現方式 通過設定Window Flag(最簡單,推薦) 通過PowerManager 第一種方式:

Android如何保持程式一直執行 (讓螢幕且停在當前程式介面)

在正常情況下,Android系統會讓程式和服務進入休眠狀態以節約電量使用。然而在開發Android程式時,有時候在程式執行的時候,不能讓系統休眠,否則有一些執行會停止,因此我們需要設定禁止休眠。 Android中設定禁止休眠有兩種方式: 1. 在View中設定FLA

Android 禁止系統休眠使螢幕不變暗保持遊戲中螢幕

Android禁止系統休眠,使螢幕不變暗,保持遊戲中螢幕高亮 實現這一功能的方法有兩種,一種是在Manifest.xml檔案裡面宣告,一種是在程式碼裡面修改LayoutParams的標誌位。具體如下: 1、在Manifest.xml檔案裡面用user-permission宣告。程式碼如下:    &l

三天不念口生三天不寫手生Linux基本命令Find,grep文件文件內容檢索(查找)好幫手

當前 ces time abd oss 文件中 創建 water 操作 Find,grep 可以輕松實現對指定文件和目錄的查找,查看,刪除,***內容的清理等等……雖然不及sed\awk\功能強大和復雜,但其方便易用結合其它命令還是可以為我們提供強大的實用功能 1、

Android螢幕防息屏

Android螢幕常亮防息屏 PowerManager 主要是用來控制電源狀態的. 通過使用該類提供的api可以控制電池的待機時間 儘可能的使用最低級別的WakeLocks鎖,並且確保使用完後釋放它 使用 WakeLock得加 許可權 <uses-permi

Android 螢幕滅屏屏廣播螢幕滅屏屏監聽

service 類註冊廣播進行監聽 /** * 作者:created by meixi * 郵箱:[email protected] * 日期:2018/9/27 09 */ public class Serview extends Service { /**

三天不念口生三天不寫手生Linux基本命令Find,grep檔案檔案內容檢索(查詢)好幫手

Find,grep 可以輕鬆實現對指定檔案和目錄的查詢,檢視,刪除,***內容的清理等等……雖然不及sed\awk\功能強大和複雜,但其方便易用結合其它命令還是可以為我們提供強大的實用功能 1、 查詢檔案建立如下結構檔案和資料夾,使用find查詢my5.txt find ./ -name my5.t

android 螢幕

今個發現一個新的方式,使螢幕常亮竟然如此簡單 傳統的方式: 亮:getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_

修辭之排山倒海信手拈來

展鴻公職考試中心成立於2001年,是一家專注於國家公務員考試(http://www.gwyks.cn/html/gwy)考前輔導培訓和書籍研發的機構。專業的師資團隊、創新實效的課程模式,真心關懷的服務理念,選擇展鴻,助您成公! 文章寫作,一直是公考求索路上一隻

位運算子(&>>^)的

1543: Numbers Time Limit: 1 Sec Memory Limit: 128 MB [Submit][Status][Web Board] Description DongDong is fond of numbers, and he has a posit

入域的機器想保持螢幕不關閉但是Policy不允許一個小指令碼可以幫你!

大家都懂得。大公司嘛,肯定有規則不允許這不允許那。 那我們運維需要做的就是合理的繞過去,幫助他們得到信任,以後做事就方便了。 案情分析。 某部門需要演示PPT在電視上,需要保持24小時螢幕不會Lock mon, 在此之前,他們一貫用法就是用硬物砸著鍵盤,但是有時候你懂的 肯定會掉

GROUP_CONCAT,SUBSTRING_INDEX的(將多條資料合併成一行並且根據某些列的合併值做條件判斷來生成最終值)

(1)不做處理: SELECT e.class_id AS class_id, c.course_name AS class_name, u.stuNum AS stu_num, u.USER_NAME AS student_name, u.department AS depart

setTimeout和setInterval解析setTimeout代替setInterval進行間歇呼叫

 "在開發環境下,很少使用間歇呼叫(setInterval),原因是後一個間歇呼叫很可能在前一個間歇呼叫結束前啟動"  妙用setTimeout代替setInterval進行間歇呼叫如下 function func(){ ​/****執行程式碼****/

遍地都是的位運算關鍵時刻竟然有

很多人都可能在面試的時候遇到過這樣一道題目: 有 1000 個一模一樣的瓶子,其中有 999 瓶是普通的水,其中有一瓶含有劇毒(稀釋後仍然具有毒性),你只有 10 條小白鼠,它們在喝下毒藥後會馬上死去,怎樣利用它們在最短的時間內判斷出哪瓶是毒藥? 我們都知道,在計算機語言當中,所有的數字最終都會

css選擇器:倒數第n奇數列偶數列倍數列

1、first-child first-child表示選擇列表中的第一個標籤。程式碼如下: li:first-child{background:#090} 上面的意思是,li 列表中的 第一個li模組的背景顏色。 2、last-child last-child表示選