Android从小部件更改屏幕亮度

时间:2012-10-21 12:50:23

标签: android android-widget appwidgetprovider

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

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

  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

  2. 我有以下权限集。

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

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

    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();
        }
    
    }
    

1 个答案:

答案 0 :(得分:0)

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