Display Helligkeit regeln

  • Antworten:10
Markus Gu
  • Forum-Beiträge: 2.644

29.06.2010, 11:04:13 via Website

Hallo

ich möchte in einem Service die globale Display Helligkeit regeln.

Ist das möglich?? Weiß wer wie man das macht?

Danke schonmal

swordiApps Blog - Website

Antworten
Michael G.
  • Forum-Beiträge: 876

29.06.2010, 11:10:58 via App

standart energisteuerungswidget? oder app quick setting.

Meld Dich mit meinen Link http://db.tt/keGqlyI bei Dropbox an, und wir haben je 250Mb mehr * Milestone 2.3.4 CM7 *

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

29.06.2010, 11:22:31 via Website

Michael Geretschläger
standart energisteuerungswidget? oder app quick setting.

hehe danke ;)

wir sind hier im entwickler forum - ich will das mit meiner app machen - via source code

swordiApps Blog - Website

Antworten
Michael G.
  • Forum-Beiträge: 876

29.06.2010, 11:28:07 via App

ok mann das ist echt der nachteil von andropitapp ich sehe so viel nicht nämlich nicht in welchem threat ich bin welches gerät du hast usw.

Meld Dich mit meinen Link http://db.tt/keGqlyI bei Dropbox an, und wir haben je 250Mb mehr * Milestone 2.3.4 CM7 *

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

29.06.2010, 11:36:45 via Website

Markus Gursch
Hallo

ich möchte in einem Service die globale Display Helligkeit regeln.

Ist das möglich?? Weiß wer wie man das macht?

Danke schonmal

Sollte theoretisch mit der Methode PutString aus System.Settings gehen und der Eigenschaft "SCREEN_BRIGHTNESS"
Nachzulesen unter:
http://developer.android.com/reference/android/provider/Settings.System.html

lg Voss

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

29.06.2010, 11:42:35 via Website

danke das klingt schonmal gut

ich habe jetzt
Settings.System.putString(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, Integer.toString(value));

value ist entweder 0 oder 255

es passiert nur leider gar nichts

muss man das irgendwie bestätigen vielleicht, damit man am display einen unterschied sieht?

vielen dank
lg

swordiApps Blog - Website

Antworten
Kay J.
  • Forum-Beiträge: 59

29.06.2010, 13:00:37 via App

such mal bei dem link oben nach screen_brightness_mode :)
evtl is auf automatisch musste aber manuell


mfg

Antworten
Jochen Rühl
  • Forum-Beiträge: 133

30.06.2010, 18:03:48 via Website

Das scheint zu funktionieren...

1int brightness = 255;
2Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, brightness);
3
4WindowManager.LayoutParams lp = getWindow().getAttributes();
5lp.screenBrightness = brightness / 100.0f;
6getWindow().setAttributes(lp);

Verlässt man dann die Aktivity, so bleibt die Helligkeitseinstellung erhalten.

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

30.06.2010, 19:24:23 via Website

Markus Gursch
danke das klingt schonmal gut

ich habe jetzt
Settings.System.putString(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, Integer.toString(value));

value ist entweder 0 oder 255

es passiert nur leider gar nichts

muss man das irgendwie bestätigen vielleicht, damit man am display einen unterschied sieht?

vielen dank
lg
Hmm schon merkwürdig .. wozu gibt es dann die Methode putString()?

lg Voss

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

30.06.2010, 19:36:11 via Website

Jochen Rühl
Das scheint zu funktionieren...

1int brightness = 255;
2Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, brightness);
3
4WindowManager.LayoutParams lp = getWindow().getAttributes();
5lp.screenBrightness = brightness / 100.0f;
6getWindow().setAttributes(lp);

Verlässt man dann die Aktivity, so bleibt die Helligkeitseinstellung erhalten.

ich hab das ganze in einem hintergrund service - da gibt es keine getwindow() soviel ich gesehen habe.

hmmm das is wohl nicht so gut

swordiApps Blog - Website

Antworten
Jochen Rühl
  • Forum-Beiträge: 133

30.06.2010, 19:47:49 via Website

Sorry, hatte ich überlesen...

Früher ging das wohl mal so:
1IHardwareService hardware = IHardwareService.Stub.asInterface(ServiceManager.getService("hardware"));
2hardware.setScreenBacklight(brightness);

Seit Cupcake geht das leider nicht mehr. :(

Nachtrag:
Mit Reflection kann man Zugriff auf den HardwareService bekommen, jedoch scheint die Methode setScreenBacklight(int) nicht mehr vorhanden zu sein.

Nachtrag 2:
Die Methode setScreenBacklight(int) ist wohl ins Power-Management gewandert.
Zugriff auf die Methode könnte man theoretisch so bekommen (ist BeanShell Code, deshalb etwas verkürzt):

1iHardwareServiceStubClass = Class.forName("android.os.IPowerManager$Stub");
2serviceMangerClass = Class.forName("android.os.ServiceManager");
3
4 asInterfaceMethod = iHardwareServiceStubClass.getMethod("asInterface", new Class[] { android.os.IBinder.class });
5
6serviceMethod = serviceMangerClass.getMethod("getService", new Class[] { String.class });
7hardwareService = serviceMethod.invoke(null, new Object[] { "power" });
8
9power = asInterfaceMethod.invoke(null, new Object[] { hardwareService });
10
11power.setBacklightBrightness(100);

Dies resultiert jedoch in folgender Exception:
1java.lang.SecurityException: Neither user 10044 nor current process has android.permission.DEVICE_POWER.

Leider ist die Berechtigung DEVICE_POWER nur für Anwendungen mit einem System Zertifikat möglich!

— geändert am 01.07.2010, 07:30:09

Antworten