2010-12-30 7 views
1

私の電話で明るさのモードと値を変更しようとしていますが、私の質問に答えたと思われるgreat thread here at SOが見つかりましたが、コードは単純に何もしません。 putInt()はtrueを返すので、成功したように見えるすべてのアカウントで、明るさはまったく同じですが、手動と自動の切り替えもできません...... WRITE_SETTINGS権限が設定されていて、logcat他の関連する出力が出て来ていないようです....今すぐ困って、しばらく休みを取るo_0Settings.System.putInt()経由で明るさを設定していません

ここに私がそれを呼んでいるスニペットがあります。これは私のアクティビティ:

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

あなたは 'MODIFY_PHONE_STATE'権限を持っていますか?私はまずそれをチェックするだろう。 –

+0

私はMODIFY_PHONE_STATEがどのように関連しているかわかりませんが、それは電話の状態を制御しますが、私はそのショットを与えました。成功すればputInt()がtrueを返すので、私は本当に混乱しています。ifステートメントがtrueであることを示すデバッグメッセージが表示されているので、それはちょっと変です。 – jamzsabb

+0

私は同じ問題があるけれども、提案に感謝します。 Galaxy Tabのような一部のデバイスは、自動的に設定を読み直して適用します。他のデバイスは、srcreenがロックされた後、またはデバイスが再起動した後にのみ設定を適用します。 – Janusz

答えて

0

私はまた、Dell Streakを実行するFroyoを持っています。

実際に画面の明るさの設定が変更になります(設定に移動すると、スライダの変更が表示されます)。

しかし、実際に画面の明るさは物理的に変化しません。これは私が理解できないものです。

0

コードが(格納された値)を設定明るさが変化しますが、それはそれは現在の明るさを変更しますという意味ではありません。

サービスでこのコードを実行している場合は、(奇妙なハッキングを除いて)の現在の明るさを変更する方法がありません。コードがUIで実行されている場合は、の明るさ設定をに変更し、の現在の明るさをusing WindowManagerに変更することができます。

0

これが私の作品:

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); 
関連する問題