2010-12-30 3 views
1

Ich versuche, den Helligkeitsmodus und Wert auf meinem Handy zu ändern, und fand eine great thread here at SO, dass ich dachte meine Frage beantwortet, aber auf meinem Freo Dell Streak dies Code tut einfach nichts. putInt() gibt true zurück, so scheint es bei allen Accounts erfolgreich zu sein, aber die Helligkeit bleibt genau gleich, kann nicht einmal zwischen manuell und automatisch wechseln ...... Ich habe die Berechtigung WRITE_SETTINGS und logcat scheint keine andere relevante Ausgabe zu haben, die herauskommt .... ratlos jetzt, werde eine Pause machen für eine Weile o_0Einstellung Helligkeit über Settings.System.putInt() funktioniert nicht

Hier ist ein Ausschnitt, wie ich es nenne, das ist in meinem (nur) Aktivität:

public void onCheckedChanged(RadioGroup group, int checked) { 
    //BrightSettings bright = new BrightSettings(); 

    switch(checked) 
    { 
     case R.id.daybutton: 
      //bright.setBrightMode(BrightSettings.DAY_MODE); 
      if(Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC)) 
       Log.d("NightMode", "Brightness seems to be set to auto...."); 
     case R.id.nightbutton: 
      //bright.setBrightMode(BrightSettings.NIGHT_MODE); 
      if (Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL) && Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 2)) 
       Log.d("NightMode", "Night mode seems to have been set...."); 
    } 
} 
+0

Haben Sie die 'MODIFY_PHONE_STATE' Erlaubnis? Ich würde das zuerst überprüfen. –

+0

Ich sehe nicht, wie MODIFY_PHONE_STATE relevant ist, es steuert den Telefoniestatus, aber ich gab das eine Chance und es gab mir immer noch nichts. Ich bin wirklich verwirrt, weil putInt() true zurückgibt, wenn es erfolgreich ist, und ich bekomme die Debug-Nachricht, die anzeigt, dass die if-Anweisung wahr war, also ist es einfach komisch. Danke für den Vorschlag obwohl – jamzsabb

+0

Ich habe das gleiche Problem. Einige Geräte wie ein Galaxy Tab lesen die Einstellungen automatisch neu und wenden sie an. Andere Geräte werden die Einstellungen erst anwenden, nachdem der Screen gesperrt wurde oder das Gerät neu gestartet wurde. – Janusz

Antwort

0

Ich habe auch eine Dell Streak läuft Froyo.

Die Bildschirmhelligkeitseinstellung ändert sich tatsächlich für mich (wenn Sie zu Einstellungen gehen, sehen Sie den Schieberegler ändern).

Die Bildschirmhelligkeit ändert sich jedoch physikalisch erst nach einiger Zeit. Das ist, was ich nicht herausfinden kann.

0

Ihr Code wird Helligkeit Einstellung ändern (der gespeicherte Wert), aber das bedeutet nicht, es aktuelle Helligkeit ändern werde.

Wenn Sie diesen Code in einem Dienst ausführen, haben Sie keine Möglichkeit aktuelle Helligkeit (abgesehen seltsame Hacks) zu ändern. Wenn der Code in der Benutzeroberfläche ausgeführt wird, können Sie die Helligkeitseinstellungen ändern und dann die aktuelle Helligkeit using WindowManager ändern.

0

arbeitet Dies ist für mich:

int brightnessMode = android.provider.Settings.System.getInt(getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE); 

if (brightnessMode == android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) 
{ 
    android.provider.Settings.System.putInt(getContentResolver(),android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE,android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); 
} 

Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 0);