【问题标题】:Android Adjusting System Brightness from a ServiceAndroid 通过服务调整系统亮度
【发布时间】:2017-07-06 13:01:50
【问题描述】:

我对 Android 开发比较陌生。我已经能够通过执行以下操作来调整我自己的应用的屏幕亮度:

WindowManager.LayoutParams layout = getWindow().getAttributes();
layout.screenBrightness = 0;
getWindow().setAttributes(layout);

我真正需要做的是在系统级别更改屏幕亮度。我想从服务或意图服务中做到这一点。我遇到的问题是

getWindow()

当您从服务调用它时失败。我认为这可以通过使用 ViewOverlays 或其他东西来实现,但到目前为止我尝试过的一切都失败了。有人有想法吗?

我需要一个解决方案,让我的应用在后台启动一项服务,然后当您在其他应用或主屏幕上使用该设备时,该服务会调整屏幕亮度。

【问题讨论】:

    标签: android


    【解决方案1】:

    你可以试试这个:

    android.provider.Settings.System.putInt(getContentResolver(),
                    android.provider.Settings.System.SCREEN_BRIGHTNESS,
                    value);
    

    将此添加到清单

    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
    

    并像这样检查运行时权限

       ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_SETTINGS}, 1);
            public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
                switch (requestCode) {
                    case 1: {
                        if (grantResults.length > 0
                                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                            //permission accepted
    
                        } else {
                            // permission denied,
                        }
                        return;
                    }
    
                }
            }
    

    【讨论】:

    • 这似乎可以工作,但是当我使用它时,我得到一个权限错误:“java.lang.SecurityException: com.peoplespete.upbright was not given this permission: android.permission.WRITE_SETTINGS” 甚至尽管我确实按照您的描述将该权限添加到清单中。
    猜你喜欢
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多