1. android wear 抬手屏幕亮 怎麼實現
方法中我們將對圖像的顏色,亮度,對比度等進行設置
需要用到ColorMatrix類。ColorMatrix類是一個四行五列的矩陣
每一行影響著[R,G,B,A]中的一個下面就是介紹如何調節亮度!內容!
在Android中我們可以對圖像進行編輯處理等操作
包括放大縮小,旋轉,偏移,裁剪,以及更改亮度,飽和度等 1、首先,從SDCard中選擇圖片,採用Android自帶的Callery應用獲得
Gallery是Android自帶的圖片和視頻管理應用
使用Intent來啟動Gallery應用,需要指定兩個參數,一個是Action,另一個是多媒體存放的URI
* Action是一個通用的Action叫ACTION_PICK,來告訴Gallery,我們想檢索數據。
* 第二個是Data,是一個URI,這里當然是MediaStore.Images.Media.EXTERNAL_CONTENT_URI
* 當在Gallery中選擇了一個圖片的時候,返回的Intent中的Data域就是所選圖片對應的URI
*
* @author Administrator
*
*/
public class PhotoProcess extends Activity{
public static final int FIRST_PIC = 0;
public static final int SECOND_PIC = 1;
public static final int MAX_WIDTH = 240;
public static final int MAX_HEIGHT = 180;
private Button btnSelect,btnSelect2;
private ImageView srcImageView, dstImageView;
private Bitmap srcBitmap, dstBitmap;
private Uri imageUri;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.setContentView(R.layout.process);
this.btnSelect = (Button)this.findViewById(R.id.btn_select);
btnSelect.setOnClickListener(clickListener);
this.btnSelect2 = (Button)this.findViewById(R.id.btn_select2);
btnSelect2.setOnClickListener(clickListener2);
srcImageView = (ImageView)this.findViewById(R.id.img_src);
dstImageView = (ImageView)this.findViewById(R.id.img_dst);
}
private View.OnClickListener clickListener = new View.OnClickListener()
{
@Override
public void onClick(View arg0) {
// 啟動Gallery應用
Intent intent = new Intent(Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, FIRST_PIC);
}
};
private View.OnClickListener clickListener2 = new View.OnClickListener()
{
@Override
public void onClick(View arg0) {
// 啟動Gallery應用
Intent intent = new Intent(Intent.ACTION_PICK,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, SECOND_PIC);
}
};
public boolean onCreateOptionsMenu(Menu menu){
//super.onCreateOptionsMenu(menu);
//MenuInflater menuInflater = new MenuInflater(this);
//menuInflater.inflate(R.layout.image, menu)
menu.add(Menu.NONE,1,Menu.NONE,"復制");
menu.add(Menu.NONE,2,Menu.NONE,"變換");
menu.add(Menu.NONE,3,Menu.NONE,"亮度");
menu.add(Menu.NONE,4,Menu.NONE,"合成");
return super.onCreateOptionsMenu(menu);
}
public boolean onOptionsItemSelected(MenuItem item){
int id = item.getItemId();
switch(id){
case 1:
//復制一個圖像
if(srcBitmap != null){
dstBitmap = getDstImage(null);//這里沒有變換
dstImageView.setImageBitmap(dstBitmap);
}
break;
case 2:
//對復制後的圖像進行變換
if(srcBitmap != null){
dstBitmap = transferImage();
dstImageView.setImageBitmap(dstBitmap);
}
break;
case 3:
//改變圖像的色彩
if(srcBitmap != null){
dstBitmap = ajustImage();
dstImageView.setImageBitmap(dstBitmap);
}
break;
case 4:
if(srcBitmap != null && dstBitmap != null){
dstBitmap = compositeImages();
dstImageView.setImageBitmap(dstBitmap);
}
break;
}
return true;
}
/**
* 為了創建一個圖像的副本,我們可以在創建一個新的空的Bitmap,然後在這個Bitmap上繪制一個Bitmap
* 這個空的Bitmap應該和已存在的Bitmap具有相同的尺寸和顏色深度
*
* 然後我們需要一個Canvas對象,一個Canvas簡單說,就是一個畫布,存放Bitmap,在構造時,就可以傳入Bitmap對象
* 同時,Canvas中定義了很多便捷的畫圖方法,方便我們繪制各種圖形
* 接下來,如果我們需要處理顏色和對比度,我們需要一個Paint對象,通過Paint我們可以設置畫筆的各種特性。
*
* 最後,我們調用Canvas的drawBitmap就可以將原Bitmap繪制在dstBitmap上了
*
*/
private Bitmap getDstImage(Matrix matrix){
Bitmap bmp = null;
//下面這個Bitmap中創建的函數就可以創建一個空的Bitmap
//返回的是一個可以改變的Bitmap對象,這樣我們後面就可以對其進行變換和顏色調整等操作了
bmp = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(),
srcBitmap.getConfig());
//創建Canvas對象,
Canvas canvas = new Canvas(bmp);
//創建Paint對象,這里先不用
Paint paint = new Paint();
//在Canvas上繪制一個已經存在的Bitmap。這樣,dstBitmap就和srcBitmap一摸一樣了
if(matrix != null){
//如果matrix存在,則採用變換
canvas.drawBitmap(dstBitmap, matrix, paint);
}else{
canvas.drawBitmap(srcBitmap, 0, 0, paint);
}
return bmp;
}
/**
* 重載getDstImage函數,傳入定製的Paint對象
* @param matrix
* @param paint
* @return
*/
private Bitmap getDstImage(Matrix matrix, Paint paint){
Bitmap bmp = null;
//下面這個Bitmap中創建的函數就可以創建一個空的Bitmap
//返回的是一個可以改變的Bitmap對象,這樣我們後面就可以對其進行變換和顏色調整等操作了
bmp = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(),
srcBitmap.getConfig());
//創建Canvas對象,
Canvas canvas = new Canvas(bmp);
//在Canvas上繪制一個已經存在的Bitmap。這樣,dstBitmap就和srcBitmap一摸一樣了
if(matrix != null){
//如果matrix存在,則採用變換
canvas.drawBitmap(dstBitmap, matrix, paint);
}else{
canvas.drawBitmap(srcBitmap, 0, 0, paint);
}
return bmp;
}
/**
* 為了放大縮小、旋轉圖像,我們要使用Matrix類。Matrix類是一個三維矩陣。
* 在Android屏幕中,圖像的每個像素對應都是一個坐標,一個坐標由x/y/z組成
* ------------------------
* cosX -sinX translateX
* sinX cosX translateY
* 0 0 scale
* ------------------------
* 第一行的值,影響著x坐標。比如 1 0 0 =>x = 1*x + 0*y + 0*z
* 第二行的值,影響著y坐標。比如0 1 0 => y = 0*x + 1*y + 0*z
* 第三行的值,影響著z坐標。比如 0 0 1 => z = 0*x + 0*y + 1*z
*
* 我們自己計算一個矩陣然後通過Matrax.setValues設置。
* 這樣,在調用canvas的drawBitmap方法時,傳入matrix
*
* Matrix類並不提倡我們使用這種方式來操作變換,Matrix針對不同的變換都相應的有pre,set,post三種方法
* 可以使用。
* pre是矩陣前乘
* set是直接設置
* post是矩陣後乘
*/
private Bitmap transferImage(){
Matrix matrix = new Matrix();
matrix.setValues(new float[]{
.5f,0,0,//這里只會影響到x軸,所以,圖片的長度將是原來的一半
0,1,0,
0,0,1
});
return this.getDstImage(matrix);
}
/**
* 該方法中我們將對圖像的顏色,亮度,對比度等進行設置
* 需要用到ColorMatrix類。ColorMatrix類是一個四行五列的矩陣
* 每一行影響著[R,G,B,A]中的一個
* -------------------------
* a1 b1 c1 d1 e1
* a2 b2 c2 d2 e2
* a3 b3 c3 d3 e3
* a4 b4 c4 d4 e4
* -------------------------
* Rnew => a1*R+b1*G+c1*B+d1*A+e1
* Gnew => a2*R+b2*G+c2*B+d2*A+e2
* Bnew => a3*R+b3*G+c3*B+d3*A+e3
* Gnew => a4*R+b4*G+c4*B+d4*A+e4
* 其中R,G,B的值是128,A的值是0
*
* 最後將顏色的修改,通過Paint.setColorFilter應用到Paint對象中。
* 主要對於ColorMatrix,需要將其包裝成ColorMatrixColorFilter對象,再傳給Paint對象
*
* 同樣的,ColorMatrix提供給我們相應的方法,setSaturation()就可以設置一個飽和度
*/
private Bitmap ajustImage(){
ColorMatrix cMatrix = new ColorMatrix();
// int brightIndex = -25;
// int doubleColor = 2;
// cMatrix.set(new float[]{
// doubleColor,0,0,0,brightIndex, //這里將1改為2則我們讓Red的值為原來的兩倍
// 0,doubleColor,0,0,brightIndex,//改變最後一列的值,我們可以不改變RGB同道顏色的基礎上,改變亮度
// 0,0,doubleColor,0,brightIndex,
// 0,0,0,doubleColor,0
// });
//cMatrix.setSaturation(2.0f);//設置飽和度
cMatrix.setScale(2.0f, 2.0f, 2.0f, 2.0f);//設置顏色同道色彩縮放
Paint paint = new Paint();
paint.setColorFilter(new ColorMatrixColorFilter(cMatrix));
return this.getDstImage(null, paint);
}
/**
* 圖像的合成,可以通過在同一個Canvas中繪制兩張圖片。
* 只是在繪制第二章圖片的時候,需要給Paint指定一個變幻模式TransferMode。
* 在Android中有一個XFermode所有的變幻模式都是這個類的子類
* 我們需要用到它的一個子類PorterDuffXfermode,關於這個類,其中用到PorterDuff類
* 這個類很簡單,就包含一個Enum是Mode,其中定義了一組規則,這組規則就是如何將
* 一張圖像和另一種圖像進行合成
* 關於圖像合成有四種模式,LIGHTEN,DRAKEN,MULTIPLY,SCREEN
*/
private Bitmap compositeImages(){
Bitmap bmp = null;
//下面這個Bitmap中創建的函數就可以創建一個空的Bitmap
bmp = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(),
srcBitmap.getConfig());
Paint paint = new Paint();
Canvas canvas = new Canvas(bmp);
//首先繪制第一張圖片,很簡單,就是和方法中getDstImage一樣
canvas.drawBitmap(srcBitmap, 0, 0, paint);
//在繪制第二張圖片的時候,我們需要指定一個Xfermode
//這里採用Multiply模式,這個模式是將兩張圖片的對應的點的像素相乘
//,再除以255,然後以新的像素來重新繪制顯示合成後的圖像
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY));
canvas.drawBitmap(dstBitmap, 0, 0, paint);
return bmp;
}
public void onActivityResult(int requestCode, int resultCode, Intent
data){
super.onActivityResult(requestCode, resultCode, data);
Log.v("Result OK Value:", resultCode+"");
Log.v("RequestCode Value", requestCode+"");
if(resultCode == RESULT_OK){
imageUri = data.getData();
if(requestCode == FIRST_PIC){
//在Gallery中選中一個圖片時,返回來的Intent中的Data就是選擇圖片的Uri
srcBitmap = getSrcImage(imageUri);
srcImageView.setImageBitmap(srcBitmap);
}else if(requestCode == SECOND_PIC){
//這里處理用戶選擇的第二張圖片
dstBitmap = getSrcImage(imageUri);
dstImageView.setImageBitmap(dstBitmap);
}
}
}
/**
* 需要載入的圖片可能是大圖,我們需要對其進行合適的縮小處理
* @param imageUri
*/
private Bitmap getSrcImage(Uri imageUri){
//Display display = this.getWindowManager().getDefaultDisplay();
try {
BitmapFactory.Options ops = new BitmapFactory.Options();
ops.inJustDecodeBounds = true;
Bitmap bmp =
BitmapFactory.decodeStream(this.getContentResolver().openInputStream(imageUri),null,ops);
int wRatio = (int)Math.ceil(ops.outWidth/(float)MAX_WIDTH);
int hRatio = (int)Math.ceil(ops.outHeight/(float)MAX_HEIGHT);
if(wRatio > 1 && hRatio > 1){
if(wRatio > hRatio){
ops.inSampleSize = wRatio;
}else{
ops.inSampleSize = hRatio;
}
}
ops.inJustDecodeBounds = false;
bmp =
BitmapFactory.decodeStream(this.getContentResolver().openInputStream(imageUri),null,ops);
return bmp;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.e(this.getClass().getName(), e.getMessage());
}
return null;
}
}
2. java代碼怎麼控制android休眠和喚醒
喚醒:android.intent.action.SCREEN_ON (代碼)
休眠:android.intent.action.SCREEN_OFF (代碼)
android系統一段時間沒有操作,
屏幕(screen)將從高亮(bright)變為暗淡(dim),如果再過段時間還是沒有操作,屏幕(screen)從暗淡(dim)變為關閉(off).這時,系統將進入休眠.
而對於某些需要保持系統喚醒甚至屏幕喚醒的應用(比如視頻播放器和音樂播放器)來說,就必須要有一個機制,使得系統不進入休眠狀態,設置保持屏幕亮屏狀態.
wakelock即用來實現以上目的
接下來對每一個模塊具體分析:
powermanager
對應文件是android/frameworks/base/core/java/android/os/PowerManager.java
在Android中應用程序並不是直接同PowerManagerService交互的,而是通過PowerManager間接地與PowerManagerService打交道。
此文件定義了一個powermanager類.
主要實現了
1,wakelock的申請與釋放
public WakeLock newWakeLock(int flags, String tag)
2,系統延時進入休眠
public void userActivity(long when, boolean noChangeLights)
3,系統強制休眠
public void goToSleep(long time)
4,屏幕亮度設置
public void setBacklightBrightness(int brightness)
5,屏幕狀態查詢
public boolean isScreenOn()
6,系統重啟
public void reboot(String reason)
細節
wakelock的申請與釋放
{@samplecode
*PowerManager pm = (PowerManager)mContext.getSystemService(
* Context.POWER_SERVICE);
*PowerManager.WakeLock wl = pm.newWakeLock(
* PowerManager.SCREEN_DIM_WAKE_LOCK
* | PowerManager.ON_AFTER_RELEASE,
* TAG);
*wl.acquire();
* // ...
*wl.release();
一共有如下幾個flag來進行不一樣的喚醒方式.可以根據需要設置
Flag Value CPU Screen Keyboard
PARTIAL_WAKE_LOCK On* can-off Off
SCREEN_DIM_WAKE_LOCK On Dim Off
PROXIMITY_SCREEN_OFF_WAKE_LOCK on 距離感測器時關閉 off
SCREEN_BRIGHT_WAKE_LOCK On Bright Off
FULL_WAKE_LOCK On Bright Bright
ACQUIRE_CAUSES_WAKEUP 確保wakelock,主要用於視頻播放器
ON_AFTER_RELEASE = 0x20000000 release後倒計時,關閉屏幕
...
userActivity的作用:
使系統從其他狀態進入全部打開狀態,比如從暗屏(dim)切換到亮屏,並重置倒計時計數器
3. Android怎麼獲取屏幕被點亮的動作
復制參考的別人的希望對你有幫助,總的來說就是監聽intent.action.SCREEN_ON廣播
在manifest文件裡面注冊一個receiver
<receiver android:name="com.test.check.MyReceiver">
<intent-filter>
<action android:name="android.intent.action.SCREEN_OFF"></action>
<action android:name="android.intent.action.SCREEN_ON"></action>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"></action>
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"></action>
<action android:name="android.intent.action.ACTION_SHUTDOWN"></action>
</intent-filter>
</receiver>
代碼部分這樣監聽:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
Log.v("#@%@%#", "Power button is pressed.");
Toast.makeText(arg0, "power button clicked",Toast.LENGTH_LONG).show();
//perform what you want here
}
}
希望這個連接能幫助你 http://hi..com/doyee/item/2f0f4d142c3455721009b548
4. android 如何讓手機進入休眠狀態,又如何喚
1.WakeLock主要代碼如下:
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, this.getClass().getName());//持有喚醒鎖
wakeLock.setReferenceCounted(false);
wakeLock.acquire(30*1000);//30s亮屏
wakeLock.release();//釋放鎖,滅屏
2.FLAG_KEEP_SCREEN_ON代碼如下
可使用 FLAG_KEEP_SCREEN_ON 替換WakeLock的方式.
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);//亮屏
this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);//滅屏
5. Android中判斷屏幕是否亮屏和是否解鎖功能
1.屏幕是否亮屏:
PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);//true為打開,false為關閉boolean ifOpen = powerManager.isScreenOn();
2.屏幕是否解鎖:
KeyguardManager mKeyguardManager = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);boolean flag = mKeyguardManager.inKeyguardRestrictedInputMode();
當前的屏幕鎖有五種設置,分別是沒有設置屏幕鎖,滑動解鎖,圖案解鎖,PIN碼解鎖,密碼解鎖。
如果沒有設置屏幕鎖,返回值會一直為FALSE。如果用戶設置了屏幕鎖(包括後四種鎖中的任何一種),屏幕不亮時返回TRUE,屏幕亮時,解鎖前返回TRUE,解鎖後返回FALSE。
有的時候我們只需一個判斷就能滿足需求,但有時我們需要這兩個相互結合滿足需求。
以上所述是小編給大家介紹的Android中判斷屏幕是否亮屏和是否解鎖功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
6. android實現了屏幕鎖 屏幕還會亮啊
網上看到的,某些rom的問題,在調用lockNow之前,先屏蔽系統的鎖屏,調用完再恢復就行了。
示例代碼如下:
[mw_shl_code=java,true]private void lockNow() {
KeyguardManager km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock kl = km.newKeyguardLock(getPackageName());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
if (kl != null) {
kl.disableKeyguard();
}
mDevicePolicyManager.lockNow();
if (kl != null) {
kl.reenableKeyguard();
}
}
}[/mw_shl_code]
7. 如何控制android手機亮屏
一、概述
我們的Android應用程序很多需要和亮屏和熄屏打交道,比如鬧鍾的時候,需要保持亮屏,之後又需要熄屏。那麼今天,我們來分析下這方面的功能。
二. 系統服務 PowerManager.java
顧名思義,PowerManager.java就是管理我們電源方面的功能的,當然也包括我們屏幕的亮和熄滅。沒錯,我們的應用程序就是通過這個系統服務來實現亮屏和熄屏的功能的。
1. 應用程序獲取PowerManager服務, 我們可以這樣書寫:
復制代碼代碼如下:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
因為PowerManager是系統服務,所以它的生命周期不是應用程序所能控制的;應用程序只能通過系統,向系統請求獲取PowerManager服務,然後系統把這個服務的應用給我們。
2. goToSleep()方法, 這個方法可以強制我們的屏幕熄屏。我們可以這樣調用:
在上面拿到pm對象之後,這樣調用
pm.goToSleep(SystemClock.uptimeMillis());
3. setBacklightBrightness()方法,這個方法可以設置背光的亮度,從0-255
三. 定時熄滅屏幕
那麼這里,還可以介紹一個控制屏幕的方法就是PowerManager.WakeLock
顧名思義,WakeLock這個東西就是亮屏控制,這里說的亮屏,它定義了幾種類型的亮屏。如下:
類型 cpu 屏幕 鍵盤
PARTIAL_WAKE_LOCK on off off
SCREEN_DIM_WAKE_LOCK on dim off
SCREEN_BRIGHT_WAKE_LOCK on Bright off
FULL_WAKE_LOCK on Bright Bright
由於它定義了這么多類型,每種類型可以指定相對應的部件工作和不工作。那麼我們就可以利用這些類型,從最細粒度來控制我們的屏幕,控制我們的電源,從而讓我們的電源工作時間盡可能的延長(大家都知道,智能手機的電池問題是一個硬傷, 每天一充電,有木有? 別人說用安卓手機的男人都是顧家好男人,因為他每天晚上都要回家充電。。^^).
好的,好的,閑話不扯,繼續。。。
怎麼使用這個WakeLock呢?我們可以這樣寫:
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG");
wakeLock.acquire();
//做我們的工作,在這個階段,我們的屏幕會持續點亮
//釋放鎖,屏幕熄滅。
wl.release();
那麼這里我們也可以這樣使用,就是多少時間後熄滅屏幕
首先點亮屏幕
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "TAG");
wakeLock.acquire();
然後
mTimeHandler.postDelayed(new Runnable(){
public void run(){
wakeLock.release();
}
}, 10*1000);
嗯,延遲10s後熄滅屏幕。。。。
那麼,這里要注意的是acquire()和release()要成對調用哦!也就是說,你申請了亮屏,過段時間,你要是釋放它。
8. android 亮屏代碼怎麼無效了
PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);
mWakelock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP |PowerManager.SCREEN_DIM_WAKE_LOCK, "SimpleTimer");
mWakelock.acquire();
mWakelock.release();
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("");
keyguardLock.disableKeyguard();
使用這兩段代碼,需要在AndroidManifest文件中加入:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"></uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
9. android怎麼做代碼高亮效果EditText中所有的關鍵詞用指定顏色顯示
引入
下載代碼,然後:
dependencies {
compile project(':highlight')
}
用法
對於上面效果圖中的一個需要高亮的View,需要通過下面的代碼
new HighLight(MainActivity.this)//
.anchor(findViewById(R.id.id_container))//
.addHighLight(R.id.id_btn_important, R.layout.info_up,
new HighLight.OnPosCallback()
{
@Override
public void getPos(float rightMargin, float bottomMargin, RectF rectF, HighLight.MarginInfo marginInfo)
{
marginInfo.leftMargin = rectF.right - rectF.width() / 2;
marginInfo.topMargin = rectF.bottom;
}
})//
anchor()指你需要在哪個view上加一層透明的蒙版,如果不設置,默認為android.R.id.content。也就是說,該庫支持局部范圍內去高亮某些View.
10. 安卓開發: 我是新手,請問調節屏幕亮度的代碼怎麼寫
public void setBrightness(int level) {
ContentResolver cr = getContentResolver();
Settings.System.putInt(cr, "screen_brightness", level);
try {
defaultLevel = Settings.System.getInt(cr, "screen_brightness");
} catch (SettingNotFoundException e) {
e.printStackTrace();
}
Window window = getWindow();
LayoutParams attributes = window.getAttributes();
float flevel = level;
attributes.screenBrightness = flevel / 255;
getWindow().setAttributes(attributes);
}
此外,UiModeManager這個類提供了控制系統UI模式的服務,可以參考使用:
{
UiModeManager uim = (UiModeManager) getSystemService(Context.UI_MODE_SERVICE);
int i = uim.getCurrentModeType();
if (i != Configuration.UI_MODE_TYPE_CAR) {
uim.enableCarMode(0);
}
uim.setNightMode(UiModeManager.MODE_NIGHT_YES);