ウィジェットから画面の明るさを変更しようとしています。基本的に、私は次のページからの提案に従いました。 画面の明るさのシステム設定を変更する Android
これまでのところ、これが私ができることです。1.ボタンを使用したメインアクティビティがあり、ボタンをクリックすると、画面の明るさを変更できます。
ボタン付きのウィジェットがあります。ウィジェットのボタンから RefreshScreen クラスが呼び出されていることを確認しました。このクラスを AppWidgetProvider から呼び出します。問題 画面の明るさが変わらない。問題をデバッグ モードで実行すると、次の警告が表示されます。
10-21 12:20:21.579: W/BackupManagerService(137): dataChanged が参加者なし pkg='com.android.providers.settings' uid=10086
10-21 12:20:21.579: W/InputManagerService(137): com.android.internal.view.IInputMethodClient$Stub$Proxy@40f56aa8 のフォーカス ゲインを無視して、ウィンドウは既にフォーカスされています
次の権限セットがあります。
明るさを変更する次のコードがあります。コードを混乱させて申し訳ありませんが、2 つのボタンがあります。Brightness ボタンを変更すると、画面が最も明るくなるはずです。音量ボタンを変更すると、画面は最も暗い部分と最も明るい部分の中間になるはずです。
どんな入力でも大歓迎です。ありがとうございました。
public class RefreshScreen extends Activity {
public static String BRIGHTNESS_VALUE = "BRIGHTNESS_VALUE";
public static String BRIGHTNESS_CHANGE = "BRIGHTNESS_ACTION";
public static String VOLUME_CHANGE = "VOLUME_ACTION";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String value = intent.getStringExtra(BRIGHTNESS_VALUE);
WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
if (value.equals(BRIGHTNESS_CHANGE)) {
Toast.makeText(this, "BRIGHTNESS CHANGE Clicked", Toast.LENGTH_LONG).show();
android.provider.Settings.System.putInt(getContentResolver(),
android.provider.Settings.System.SCREEN_BRIGHTNESS, 255);
layoutParams.screenBrightness = 1F;
getWindow().setAttributes(layoutParams);
}
if (value.equals(VOLUME_CHANGE)) {
Toast.makeText(this, "VOLUME CHANGE Clicked", Toast.LENGTH_LONG).show();
android.provider.Settings.System.putInt(getContentResolver(),
android.provider.Settings.System.SCREEN_BRIGHTNESS, 125);
layoutParams.screenBrightness = 0.5F;
getWindow().setAttributes(layoutParams);
}
finish();
}
}