El brillo de la pantalla es uno de esos factores que afecta directamente a los usuarios, así como a la batería de un dispositivo. Los dispositivos Android son sistemas inteligentes y tienen un sistema incorporado para el brillo automático. Pero la mayoría de las veces esta función no está marcada por los usuarios o está desactivada de forma predeterminada. Independientemente de si esta característica está presente, activada o desactivada, o ausente en cualquier dispositivo, un desarrollador debe tener en cuenta esta oportunidad y desarrollar una aplicación optimizada. Cualquier cosa que se declare dentro de la aplicación puede tener un efecto en el espacio exterior, es decir, si el brillo de la pantalla se cambió mediante programación desde una aplicación, el valor del brillo puede permanecer inalterado incluso después de salir de la aplicación. Entonces, uno debe intentar rastrear los originales y configurarlos antes de que un usuario salga.
¿Dónde podemos usar esta característica?
- No multimedia: las aplicaciones no multimedia (música o video) podrían usar los botones de volumen para aumentar o disminuir el brillo de una pantalla en pasos.
- Aplicaciones de lectores de libros: leer libros a veces puede ser una elección cambiante, uno puede aumentar o disminuir el brillo directamente desde la aplicación en pasos.
- Aplicaciones de papel de noticias: se puede aumentar o disminuir el brillo directamente desde la aplicación en pasos.
A través de este artículo, queremos que sepas que los botones de volumen pueden usarse para aumentar y disminuir el brillo de una pantalla.
Acercarse
Paso 1: Crear un nuevo proyecto
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Kotlin como lenguaje de programación.
Paso 2: trabajar con el archivo AndroidManifest.xml
Controlar el brillo de la pantalla del dispositivo requiere un cambio en la configuración raíz, para lo cual se declara un permiso de uso de WRITE_SETTINGS en el archivo AndroidManifest.xml .
<usos-permiso android:name=”android.permission.WRITE_SETTINGS”
herramientas: ignorar = «Permisos protegidos» />
AndroidManifest.xml
XML
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="org.geeksforgeeks.screenbrightness_usingvolumekeys"> <!--Add this permission--> <uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Paso 3: trabajar con el archivo activity_main.xml
No hay nada que hacer con el archivo activity_main.xml . Así que mantén el archivo como está.
XML
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
Paso 4: trabajar con el archivo MainActivity.kt
Finalmente, vaya al archivo MainActivity.kt y consulte el siguiente código. MainActivity.kt
Kotlin
import android.content.Context import android.content.Intent import android.os.Build import android.os.Bundle import android.provider.Settings import android.view.KeyEvent import android.widget.Toast import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity import kotlin.math.round class MainActivity : AppCompatActivity() { var brightnessValue = 255 @RequiresApi(Build.VERSION_CODES.M) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } // Function to decrease the brightness @RequiresApi(Build.VERSION_CODES.M) fun decrease() { // Get app context object. val context = applicationContext // Check whether has the write settings permission or not. val settingsCanWrite = hasWriteSettingsPermission(context) // If do not have then open the Can modify system settings panel. if (!settingsCanWrite) { changeWriteSettingsPermission(context) } else { if (brightnessValue >= 11) { brightnessValue -= 10 changeScreenBrightness(context, brightnessValue) val k = brightnessValue.toDouble() / 255 Toast.makeText( applicationContext, "Brightness : ${round(k * 100)}%", Toast.LENGTH_SHORT ).show() } } } // Function to increase the brightness @RequiresApi(Build.VERSION_CODES.M) fun increase() { val context = applicationContext // Check whether has the write settings permission or not. val settingsCanWrite = hasWriteSettingsPermission(context) // If do not have then open the Can modify system settings panel. if (!settingsCanWrite) { changeWriteSettingsPermission(context) } else { if (brightnessValue <= 245) { brightnessValue += 10 changeScreenBrightness(context, brightnessValue) val k = brightnessValue.toDouble() / 255 Toast.makeText( applicationContext, "Brightness : ${round(k * 100)}%", Toast.LENGTH_SHORT ).show() } } } // Listen to the volume keys @RequiresApi(Build.VERSION_CODES.M) override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { // What happens when volume down key is pressed if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { decrease() } // What happens when volume up key is pressed if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { increase() } return true } // Check whether this app has android write settings permission. @RequiresApi(Build.VERSION_CODES.M) private fun hasWriteSettingsPermission(context: Context): Boolean { var ret = true // Get the result from below code. ret = Settings.System.canWrite(context) return ret } // Start can modify system settings panel to let // user change the write settings permission. private fun changeWriteSettingsPermission(context: Context) { val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS) context.startActivity(intent) } // This function only take effect in real physical android device, // it can not take effect in android emulator. private fun changeScreenBrightness(context: Context, screenBrightnessValue: Int) { // Change the screen brightness change mode to manual. Settings.System.putInt( context.contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL ) // Apply the screen brightness value to the system, this will change // the value in Settings ---> Display ---> Brightness level. // It will also change the screen brightness for the device. Settings.System.putInt( context.contentResolver, Settings.System.SCREEN_BRIGHTNESS, screenBrightnessValue ) } }
Salida: ejecutar en el emulador
Tenga en cuenta que antes de ejecutar la aplicación, asegúrese de haber otorgado los permisos necesarios ; de lo contrario, la aplicación se bloqueará.
Publicación traducida automáticamente
Artículo escrito por aashaypawar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA