【问题标题】:how to set the screen brightness and Font-Scale in android如何在android中设置屏幕亮度和Font-Scale
【发布时间】:2012-08-28 01:34:37
【问题描述】:

我将设备设置设置为特定值。我想使用以下代码调整屏幕亮度和字体比例 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 的值不会改变。 我认为也许是一种刷新设置以获取新值的方法。谁能帮帮我?

【问题讨论】:

  • 你的 android sdk 版本是多少?
  • 我在 2.3 和 4.1 上运行,两者都是一样的

标签: android font-size screen-brightness


【解决方案1】:

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

要改变亮度,你需要调用

 PowerManagerService.setBacklightBrightness(brightness);

然后改变

 ActivityManagerNative.getDefault().updatePersistentConfiguration(mCurConfig)

【讨论】:

  • 感谢我的朋友,我重启手机后它确实有效
  • 不能 android 提供将特定设置应用系统明智的方法。为什么需要重启?
【解决方案2】:

查看源代码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 的回答更适合于活动或应用程序上下文。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多