1

我将设备设置设置为某些值。我想使用以下代码调整屏幕亮度和字体比例 iam:

//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。Font-Scale 的值不会改变。我认为也许是一种刷新设置以获取新值的方法。谁能帮我?

4

2 回答 2

2

应用程序无法做到这一点。使这些设置生效的一种方法是重新启动手机。如果您具有 root 访问权限,则可以使用非公共 API。使用下面的代码使用反射来做到这一点。

要更改亮度,您需要调用

 PowerManagerService.setBacklightBrightness(brightness);

并改变

 ActivityManagerNative.getDefault().updatePersistentConfiguration(mCurConfig)
于 2012-09-03T10:40:44.287 回答
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 的答案对于活动或应用程序上下文更好。

于 2014-06-26T05:48:31.597 回答