2017-07-06 115 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

這是關於我編輯我的代碼的運行時權限 –