2017-07-06 75 views
0

我对Android开发比较陌生。我已经能够做这样的事情来调整自己的应用程序的屏幕亮度:Android调整系统亮度服务

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

我真正需要做虽然是改变一个系统级的屏幕亮度。我想从服务或意向服务中做到这一点。我遇到的问题是,

getWindow() 

从服务调用它时失败。我认为这可能是通过使用ViewOverlay或其他东西,但我迄今为止尝试过的所有东西都失败了。有人有想法吗?

我需要在我的应用程序在后台启动的服务,然后你在其他应用程序或在主屏幕上使用的设备服务调节屏幕亮度的解决方案。

回答

0

你可以试试这个:

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

      } 
     } 
+0

运行时允许这似乎是它的工作,但是当我使用它我得到一个权限错误:“java.lang.SecurityException:com.peoplespete.upbright未被授予此权限:android.permission。 WRITE_SETTINGS“,即使我已经按照你所描述的将清单添加到了清单中。 – peoplespete

+0

这是关于我编辑我的代码的运行时权限 –