2012-09-03 55 views
1

iam將設備設置設置爲特定值。我想用下面的代碼來調節屏幕亮度和字體刻度IAM:如何在Android中設置屏幕亮度和字體比例

//For Font-Scale 
Settings.System.putFloat(this.getContentResolver(),Settings.System.FONT_SCALE,(float) 1.3); 
//For Brightness 
Settings.System.putString(this.getContentResolver(),Settings.System.SCREEN_BRIGHTNESS,255); 

的亮度值不改變,但設置激活它,我必須去屏幕設置並打開亮度設置和按OK。 字體縮放的值不會更改。 我想可能是一種刷新設置以獲得新值的方法。誰能幫我?

+0

什麼是你的android sdk版本? –

+0

iam tring 2.3和4.1和兩者都是相同的 – AnasBakez

回答

2

這不能由應用程序完成。讓這些設置生效的一種方法是重新啓動手機。如果你有root權限,你可以使用非公開的apis。使用下面的代碼來使用反射來完成它。

要改變亮度,你需要調用

PowerManagerService.setBacklightBrightness(brightness); 

而要改變

ActivityManagerNative.getDefault().updatePersistentConfiguration(mCurConfig) 
+0

感謝我的朋友,它真的工作後,我已經重新啓動移動 – AnasBakez

+0

cann't android提供方法,把具體設置應用系統明智。爲什麼需要重新啓動? –

0

檢查源代碼DisplaySettings.java,這裏是控制字體大小規模

public void writeFontSizePreference(Object objValue) { 
    try { 
     mCurConfig.fontScale = Float.parseFloat(objValue.toString()); 
     ActivityManagerNative.getDefault().updatePersistentConfiguration(mCurConfig); 
    } catch (RemoteException e) { 
     Log.w(TAG, "Unable to save font size"); 
    } 
} 
方法

這裏是一個解決方案保持字體大小在不同的字體。

float textSize = 22f; 
mTextView.setTextSize(textSize/getResources().getConfiguration().fontScale); 

我認爲@shoe rat的答案對於活動或應用程序環境更好。