0

私のアプリは単純な「明るさチェンジャー」で、システムの明るさも変更します (実装が簡単ではありません:D)。
私は実際にすべてをセットアップし、正常に動作しています...少し面倒なことを除いて...明るさが最初に画面を「点滅」して最高の明るさ(100%の光のように)に変更し、0.5秒ほど後に、適切な明るさに変わります。

例: システムの明るさは 120 にする必要があります。 1. 255 (最大) に変更し、0.5 秒後に 120 に変更します。

これが私の2つのクラスのコードです。Dummy クラスは、(明るさの変更を適用するために必要な) を「リセット」するために使用されます。

編集:ところで。問題は「lp.screenBrightness = 100/100.0f;」だと思います ダミーアクティビティで。しかし、それなしでは機能しません:/


test.java

public class Test extends Activity
{
    SeekBar seekbar;
    TextView value;
    TextView debug;
    Button button1;
    Button button2;
    Button button3;

    public void onCreate(Bundle savedInstanceState)
    {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        value = (TextView) findViewById(R.id.textview2);
        debug = (TextView) findViewById(R.id.textview3);
        seekbar = (SeekBar) findViewById(R.id.seekbar);
        button1 = (Button) findViewById(R.id.button1);
        button2 = (Button) findViewById(R.id.button2);
        button3 = (Button) findViewById(R.id.button3);

        seekbar.setOnSeekBarChangeListener( new OnSeekBarChangeListener()
        {
            public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser)
            {
                // TODO Auto-generated method stub
                int brightness = progress+1;
                double b = brightness/2.55;
                double c = Math.round(b*100)/100;
                int percent = (int) c;
                if (percent==0) {
                    value.setText("Lightlevel: !MIN!");
                }else if (percent==100){
                    value.setText("Lightlevel: !MAX!");
                }else{
                    value.setText("Lightlevel: "+percent+"%");
                }
                debug.setText("int brightness: "+brightness+" / double b:"+b+" / double c: "+c+" / int percent: "+percent);
                Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS, brightness);
            }

            public void onStartTrackingTouch(SeekBar seekBar)
            {
                // TODO Auto-generated method stub
                Intent in = new Intent(Test.this,DummyBrightnessActivity.class);
                startActivity(in);
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub

            }
        });


        button1.setOnClickListener(new OnClickListener()
        {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS, 1);

                Intent in = new Intent(Test.this,DummyBrightnessActivity.class);
                startActivity(in);
            }

        });

        button2.setOnClickListener(new OnClickListener()
        {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS, 127);

                Intent in = new Intent(Test.this,DummyBrightnessActivity.class);
                startActivity(in);
            }

        });

        button3.setOnClickListener(new OnClickListener()
        {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS, 255);

                Intent in = new Intent(Test.this,DummyBrightnessActivity.class);
                startActivity(in);
            }

        });
    }
}

DummyBrightnessActivity.java

public class DummyBrightnessActivity extends Activity{

    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.dummy);

        WindowManager.LayoutParams lp = getWindow().getAttributes();
        lp.screenBrightness = 100/100.0f;
        getWindow().setAttributes(lp);

        Timer timer2 = new Timer();
        timer2.schedule(new TimerTask() {

           public void run() {

              finish();

           }

        }, 500);

    }
}
4

1 に答える 1

0

将来の使用のために私自身の質問に答えます。

問題は本当にlp.screenBrightness = 100/100.0f;です。だから私はいくつかの変数をintentの正しい値を持つ に入れるので、 のbrightnessようにすることができますlp.screenBrightness = brightness;

これはちょっと短いことはわかっていますが、誰かがそれについてもっと知りたい場合は、コメントで尋ねてください.

于 2012-06-21T12:34:52.490 に答える