0

ウィジェットから画面の明るさを変更しようとしています。基本的に、私は次のページからの提案に従いました。 画面の明るさのシステム設定を変更する Android

これまでのところ、これが私ができることです。1.ボタンを使用したメインアクティビティがあり、ボタンをクリックすると、画面の明るさを変更できます。

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

}
4

1 に答える 1

0

あなたのアクティビティは、ウィンドウから構成を更新する人のようです...(つまり、あなたのアクティビティは他の質問のダミーアクティビティです)。表示される前にアクティビティを強制終了すると、システムの明るさを更新できなくなります... アクティビティ onResume() に finish() を入れてみてください... これは正しく動作する可能性があります。

于 2013-06-28T19:33:41.440 に答える