سؤال

أريد تغيير سطوع الشاشة برمجياً في Android. في الوقت الحالي ، أستخدم هذا الرمز:

WindowManager.LayoutParams lp = getWindow().getAttributes();
float brightness=1.0f;
lp.screenBrightness = brightness;
getWindow().setAttributes(lp);

ولكن هذا الرمز النموذج يعمل على كب كيك ، وليس على أحدث الإصدارات. أنا أستخدم أحدث إصدار من SDK .. ما هو الحل المفضل لإصدارات Android الأحدث؟

هل كانت مفيدة؟

المحلول

ماذا عن استخدام واجهة ihardwareservice لهذا؟ يمكن العثور على مثال في هذا الدورة التعليمية.

تحديث: لا يزال رابط البرنامج التعليمي يعمل ، ولكن الرمز الفعلي متاح أيضًا في الإجابة التالية.

نصائح أخرى

من الممكن القيام بذلك باستخدام:

WindowManager.LayoutParams layout = getWindow().getAttributes();
layout.screenBrightness = 1F;
getWindow().setAttributes(layout);

أنظر أيضا:http://developer.android.com/reference/android/view/windowmanager.layoutparams.html#screenbrightness

عليك إضافة params إلى Window قبل إنشاؤه وإلا فإنه سوف يرمي java.lang.IllegalArgumentException: Window type can not be changed after the window is added.

انظر المثال مع أ android.app.Dialog.Dialog.

final Dialog dialog = new Dialog(this) {
            @Override
            public void onAttachedToWindow() {
                super.onAttachedToWindow();
                WindowManager.LayoutParams layout = getWindow()
                        .getAttributes();
                layout.screenBrightness = 1F;
                getWindow().setAttributes(layout);
            }
        };
        dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        dialog.show();

يرجى ملاحظة أن قيمة السطوع تتراوح بين 0.0F و 1.0F.

@kamal_tech_view: يجب تحويل القيمة تخطيط. screenbrightness = القيمة ؛ لتطفو

إجابة متأخرة جدًا ولكنها تريد تحسينها ..

لقد حاولت رمز Tor-Morten ، لكن الأمر مخصص لشاشة معينة ، أردت التغيير في أي مكان ، لقد قدمت خدمة لذلك.

تغيير السطوع وفقًا للضوء المحيط في Android

الأمل ، سيكون مفيدًا للآخرين.

final Dialog dialog = new Dialog(act);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog
                .setContentView(R.layout.menubase_brightness_control);
        dialog.setCanceledOnTouchOutside(true);

        SeekBar global_brightness_control = (SeekBar) dialog
                .findViewById(R.id.global_brightness_control);
        global_brightness_control.setMax(255);
        global_brightness_control.setProgress(Settings.System.getInt(
                con.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS));

        global_brightness_control
                .setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

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

                    }

                    public void onStartTrackingTouch(SeekBar seekBar) {
                        // TODO Auto-generated method stub

                    }

                    public void onProgressChanged(SeekBar seekBar,
                                                  int progress, boolean fromUser) {
                        Settings.System
                                .putInt(con.getContentResolver(),
                                        Settings.System.SCREEN_BRIGHTNESS, progress);
                    }
                });

        dialog.show();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top