Helligkeit Bildschirmfilter

Hat jemand eine Idee, wie man einen Brightness Screen Filter wie der hier zu implementieren:

Http://www.appbrain.com/app/screen-filter/com.haxor

Ich brauche einen Ausgangspunkt und ich kann nicht herausfinden, wie es geht

  • Saubere Weg, um allmähliches Fading von Helligkeit in Android zu implementieren?
  • Android: Erkennung von Helligkeit (Lichtmenge) in der Umgebung des Telefons mit der Kamera?
  • Ändern Sie die Systemhelligkeit programmgesteuert
  • Kann die System-Bildschirmhelligkeit nicht programmgesteuert in Android anwenden
  • Ändern der Bildschirmhelligkeit programmgesteuert (wie beim Power-Widget)
  • Holen Sie sich bevorzugte Bildschirmhelligkeit in Android
  • 4 Solutions collect form web for “Helligkeit Bildschirmfilter”

    Machen Sie einfach eine transparente Vollbild-Aktivität, die Berührungen durchlaufen lässt. Um Berührungen durchzuführen, verwenden Sie die folgenden Fenster-Flags, bevor Sie den Inhalt festlegen:

    @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Window window = getWindow(); // Let touches go through to apps/activities underneath. window.addFlags(FLAG_NOT_TOUCHABLE); // Now set up content view setContentView(R.layout.main); } 

    Für Ihre main.xml Layout-Datei verwenden Sie einfach einen Vollbild-LinearLayout mit einem transparenten Hintergrund:

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/background" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#33000000"> </LinearLayout> 

    Dann ändern Sie die "Helligkeit" ändern Sie einfach den Wert der Hintergrundfarbe aus Ihrem Code irgendwo:

     findViewById(R.id.background).setBackgroundColor(0x66000000); 
    • Holen Sie sich eine Instanz von WindowManager.

      WindowManager windowManager = (WindowManager) Class.forName("android.view.WindowManagerImpl").getMethod("getDefault", new Class[0]).invoke(null, new Object[0]);

    • Erstellen Sie ein Vollbild-Layout xml (Layout-Parameter auf fill_parent )

    • Setzen Sie Ihre Ansicht als nicht anklickbar, nicht fokussierbar, nicht lange klickbar, etc, so dass die Berührung an Ihre App weitergegeben wird und die App es erkennen kann.

      view.setFocusable(false);
      view.setClickable(false);
      view.setKeepScreenOn(false);
      view.setLongClickable(false);
      view.setFocusableInTouchMode(false);

    • Erstellen Sie einen Layout-Parameter vom Typ android.view.WindowManager.LayoutParams . LayoutParams layoutParams = new LayoutParams();

    • Set Layout Parameter wie Höhe, Breite etc

       layoutParams.height = LayoutParams.FILL_PARENT; layoutParams.width = LayoutParams.FILL_PARENT; layoutParams.flags = 280; // You can try LayoutParams.FLAG_FULLSCREEN too layoutParams.format = PixelFormat.TRANSLUCENT; // You can try different formats layoutParams.windowAnimations = android.R.style.Animation_Toast; // You can use only animations that the system to can access layoutParams.type = LayoutParams.TYPE_SYSTEM_OVERLAY; layoutParams.gravity = Gravity.BOTTOM; layoutParams.x = 0; layoutParams.y = 0; layoutParams.verticalWeight = 1.0F; layoutParams.horizontalWeight = 1.0F; layoutParams.verticalMargin = 0.0F; layoutParams.horizontalMargin = 0.0F; 
    • Schlüsselschritt: Sie können festlegen, welcher Prozentsatz der Helligkeit Sie benötigen. layoutParams.setBackgroundDrawable(getBackgroundDrawable(i));

       private Drawable getBackgroundDrawable(int i) { int j = 255 - (int) Math.round(255D * Math.exp(4D * ((double) i / 100D) - 4D)); return new ColorDrawable(Color.argb(j, 0, 0, 0));} 
    • Schließlich füge View View zu windowManager hinzu, den du früher erstellt hast.

      windowManager.addView(view, layoutParams);

    Hinweis: Sie benötigen die SYSTEM_ALERT_WINDOW , um eine Überlagerung auf dem Bildschirm zu legen.

     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 

    Hab das getestet und es funktioniert. Lassen Sie mich wissen, wenn Sie stecken bleiben.

    Natürlich kannst du das nicht benutzen, ist der Produktionscode, aber wenn du herumspielst, versuchst du diesen undokumentierten Hack

    Es benutzt :

     private void setBrightness(int brightness) { try { IHardwareService hardware = IHardwareService.Stub.asInterface( ServiceManager.getService("hardware")); if (hardware != null) { hardware.setScreenBacklight(brightness); } } catch (RemoteException doe) { } } 

    Denken Sie daran, dass es diese Berechtigung verwendet:

      <uses-permission android:name="android.permission.HARDWARE_TEST"/> 

    Du versuchst das auch:

     protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.max_bright); WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.screenBrightness = 100 / 100.0f; getWindow().setAttributes(lp); } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.