studio samsung programacion pantalla nocturno móviles modo desarrollo curso color calibrar brillo aumentar aplicaciones android filter screen brightness

android - samsung - Filtro de pantalla de brillo



modo nocturno samsung (4)

Simplemente realice una actividad transparente a pantalla completa que permita el paso de los toques. Para hacer que los toques pasen, utilice los siguientes indicadores de Ventana antes de configurar contentView:

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

Para su archivo de diseño main.xml solo use una pantalla completa LinearLayout con un fondo transparente:

<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>

Luego, para ajustar el "brillo" simplemente cambie el valor del color de fondo de su código en alguna parte:

findViewById(R.id.background).setBackgroundColor(0x66000000);

¿Alguien tiene una idea de cómo implementar un filtro de pantalla de brillo como el que se muestra aquí?

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

Necesito un punto de partida y no puedo encontrar la manera de hacerlo.


Usted puede intentar esto también:

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


  • Obtenga una instancia de WindowManager.

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

  • Cree un xml de diseño de pantalla completa (los parámetros de diseño se establecen en fill_parent )

  • Establezca su vista como no seleccionable, no se puede enfocar, no se puede hacer clic mucho, etc. para que el toque se transfiera a su aplicación y la aplicación pueda detectarla.

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

  • Cree un parámetro de diseño de tipo android.view.WindowManager.LayoutParams . LayoutParams layoutParams = new LayoutParams();

  • Establecer parámetros de diseño como altura, ancho, 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;

  • Paso clave: puede establecer qué porcentaje de brillo necesita. 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));}

  • Finalmente, agregue view a windowManager que creó anteriormente.

    windowManager.addView(view, layoutParams);

Nota: Necesita el permiso SYSTEM_ALERT_WINDOW para colocar una superposición en la pantalla.

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

Han probado esto y funciona. Avísame si te quedas atascado.


Por supuesto que no puedes usar este código de producción, pero si estás jugando ... prueba este truco no documentado

Usa :

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

Recuerde que usa este permiso:

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