繁体   English   中英

Android从小部件更改屏幕亮度

[英]Android changing screen brightness from a widget

我正在尝试从小部件更改屏幕亮度。 基本上,我遵循了下一页的建议。 更改屏幕亮度系统设置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的聚焦增益

我设置了以下权限。

我有以下代码来更改亮度。 很抱歉混淆代码,但是我有两个按钮。 更改“亮度”按钮后,屏幕应该会变亮。 更改“音量”按钮后,屏幕应该位于最暗和最亮之间的一半。

任何输入,不胜感激。 谢谢。

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()放入活动onResume()中...这可能会正常工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM