【问题标题】:Android changing screen brightness from a widgetAndroid 从小部件更改屏幕亮度
【发布时间】:2012-10-21 12:50:22
【问题描述】:

我正在尝试通过小部件更改屏幕亮度。 基本上,我遵循了下一页的建议。 Changing the Screen Brightness System Setting Android

到目前为止,这是我能够做到的。 1.我有一个带按钮的主Activity,当我点击按钮时,我可以改变屏幕的亮度。

  1. 我有一个带按钮的小部件。 我已经确认从小部件按钮调用 RefreshScreen 类。 我从 AppWidgetProvider 调用这个类。 问题 屏幕亮度不变。 当我使用调试模式运行问题时,我收到以下警告。

    10-21 12:20:21.579: W/BackupManagerService(137): dataChanged 但没有参与者 pkg='com.android.providers.settings' uid=10086

    10-21 12:20:21.579:W/InputManagerService(137):窗口已经聚焦,忽略焦点增益:com.android.internal.view.IInputMethodClient$Stub$Proxy@40f56aa8

我有以下权限集。

我有以下代码来改变亮度。 我很抱歉混淆了代码,但我有两个按钮。 当亮度按钮改变时,屏幕应该是最亮的。 更改音量按钮时,屏幕应该在最暗和最亮之间。

非常感谢任何输入。 谢谢。

public class RefreshScreen extends Activity {
    public static String BRIGHTNESS_VALUE = "BRIGHTNESS_VALUE";
    public static String BRIGHTNESS_CHANGE = "BRIGHTNESS_ACTION";
    public static String VOLUME_CHANGE = "VOLUME_ACTION";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        String value = intent.getStringExtra(BRIGHTNESS_VALUE);

        WindowManager.LayoutParams layoutParams = getWindow().getAttributes();

        if (value.equals(BRIGHTNESS_CHANGE)) {
            Toast.makeText(this, "BRIGHTNESS CHANGE Clicked", Toast.LENGTH_LONG).show();
            android.provider.Settings.System.putInt(getContentResolver(),
                    android.provider.Settings.System.SCREEN_BRIGHTNESS, 255);

            layoutParams.screenBrightness = 1F;
            getWindow().setAttributes(layoutParams);
        }
        if (value.equals(VOLUME_CHANGE)) {
            Toast.makeText(this, "VOLUME CHANGE Clicked", Toast.LENGTH_LONG).show();
            android.provider.Settings.System.putInt(getContentResolver(),
                    android.provider.Settings.System.SCREEN_BRIGHTNESS, 125);

            layoutParams.screenBrightness = 0.5F;
            getWindow().setAttributes(layoutParams);
        }
        finish();
    }

}

【问题讨论】:

  • 我发现如果我推荐finish(),这段代码就可以工作。知道为什么吗?

标签: android android-widget appwidgetprovider


【解决方案1】:

您的活动似乎是将从窗口更新配置的人...(我的意思是,您的活动是另一个问题的虚拟活动)。如果您在活动显示之前将其终止,您将无法刷新系统亮度... 尝试将finish() 放在活动onResume() 中...这可能会正常工作。

【讨论】:

    猜你喜欢
    • 2011-10-06
    • 2012-12-22
    • 1970-01-01
    • 2011-11-30
    • 2013-03-21
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多