Kontroller Android's LCD-bakgrunnsbelysning programmatisk

Jeg er ingeniør gjennom og gjennom. Jeg liker å tulle. Jeg liker å trekke ting fra hverandre og se hvordan det fungerer. Visittkortet mitt leser tydelig programvareingeniør, men i hemmelighet har jeg en sterk tilknytning til maskinvare. Maskinvare er der jeg startet karrieren, og enhver sjanse jeg får til å skrive programvare som manipulerer maskinvaren på en mer direkte måte, gleder jeg meg over muligheten. For et par uker siden da jeg ble spurt om hvordan jeg skulle justere LCD-bakgrunnsbelysningen på et Android-nettbrett fra en applikasjon, vel, jeg kunne ikke vente med å gi den en gang.

Denne opplæringen vil demonstrere hvordan du kan lese og skrive til LCD-lysets lysstyrke kontroll. Baklyseteknikken demonstrert i dette innlegget er ikke vedvarende; med andre ord, i sjeldne tilfeller der du utilsiktet kan "justere" skjermen til et punkt der du ikke lenger kunne lese den, vil du starte enheten på nytt igjen til sin opprinnelige tilstand. Hvis jeg ikke har skremt deg av ennå, kan du følge med trinn-for-trinn-opplæringen nedenfor, eller laste ned og importere hele prosjektet til Eclipse.

1. Start et nytt Android-prosjekt i Eclipse. For at bakgrunnsbelysningsteknikken vi bruker skal fungere ordentlig, må du målrette Android 2.2 (Froyo) eller nyere. Sørg for å gi nytt navn til oppstartsfilen til Main.java, og den tilhørende layoutfilen til main.xml.

2. Siden vi ikke fortsetter noen innstillinger, trenger vi ikke å endre manifestet. La oss hoppe rett inn i mappen / res / layout og definere hovedskjermen. Oppsettet vil bestå av et par tekstvisninger, og to knapper for å justere bakgrunnsbelysningsverdien. Jeg bruker en tabelloppsett for å plassere knappene og en tom visning for å simulere en horisontal regel.

main.xml

 "Http://schemas.android.com/apk/res/android" 
 android: layout_width = "fill_parent" 
 android: layout_height = "fill_parent" 
 android: orientering = "vertikal" 
 android: gravitasjon = "sentrum" 
 android: bakgrunn = "# 000000" > 
 android: layout_width = "wrap_content" 
 android: layout_height = "wrap_content" 
 android: layout_gravity = "sentrum" 
 android: textSize = "20sp" 
 android: textColor = "# 00ff00" 
 android: text = "LCD Brightness Control" /> 
 android: layout_width = "fill_parent" 
 android: layout_height = "3px" 
 android: bakgrunn = "#ffffff" 
 android: layout_marginLeft = "30 dip" 
 android: layout_marginRight = "30dip" /> 
 android: layout_width = "fill_parent" 
 android: layout_height = "wrap_content" 
 android: orientering = "horisontal" 
 android: gravitasjon = "sentrum" 
 android: stretchColumns = "*" 
 android: layout_margin = "30dip" > 
 android: layout_width = "wrap_content" 
 android: layout_height = "wrap_content" 
 android: tekst = "-" 
 android: textStyle = "fet" 
 android: textSize = "20sp" 
 android: id = "@ + id / down_button" /> 
 android: layout_width = "wrap_content" 
 android: layout_height = "wrap_content" 
 android: layout_gravity = "sentrum" 
 android: textColor = "#ffffff" 
 android: tekst = "100%" 
 android: id = "@ + id / text_display" /> 
 android: layout_width = "wrap_content" 
 android: layout_height = "wrap_content" 
 android: tekst = "+" 
 android: textStyle = "fet" 
 android: textSize = "20sp" 
 android: id = "@ + id / up_button" /> 

3. Neste kommer /src/Main.java-filen. Vi starter med å definere en standard lysstyrkeverdi for LCD-skjermen, koble til knappene våre, og initialisere både bakgrunnsbelysningskontrollen og etiketten vår.

 pakke com.authorwjf.bright_idea; 
 import android.os.Bundle; 
 import android.view.View; 
 import android.view.View.OnClickListener; 
 import android.view.Window; 
 import android.view.WindowManager; 
 import android.widget.TextView; 
 import android.app.Aktivitet; 
 public class Main utvider aktivitetsredskaper OnClickListener { 
 privat statisk int DEFAULT = 50; 
 privat lysstyrke; 
 @Overstyring 
 public void onCreate (Bundle savedInstanceState) { 
 super .onCreate (savedInstanceState); 
 setContentView (R.layout. main ); 
 lysstyrke = STANDARD ; 
 setBrightness (); 
 findViewById (R.id. down_button ) .setOnClickListener ( dette ); 
 findViewById (R.id. up_button ) .setOnClickListener ( dette ); 
 } 
 } 

4. Lytteren på klikk er ansvarlig for å oppdatere klassevariabelen som inneholder vår logiske verdi, og ringe til den private funksjonen som vil bruke den logiske verdien på den fysiske maskinvaren.

 @Overstyring 
 public void onClick (Vis v) { 
 if (v.getId () == R.id. up_knapp ) { 
 lysstyrke + = 10; 
 if (lysstyrke> 100) lysstyrke = 100; 
 } annet { 
 Skarphet- = 10; 
 if (lysstyrke <0) lysstyrke = 0; 
 } 
 setBrightness (); 
 } 

5. Den angitte lysstyrkefunksjonen er på sin side ansvarlig for å oversette lysstyrkeverdien fra vår kjente 0 til 100 skala til den interne 0 til 1 skalaen som brukes av Android, bruke innstillingen i det nåværende vinduet og påkalle metoden som holder etiketten vår aktuell .

 private void setBrightness () { 
 Vindu w = getWindow (); 
 WindowManager.LayoutParams lp = w.getAttributter (); 
 lp.screenBrightness = ( flyt ) lysstyrke / 100; 
 if (lp.screenBrightness <.01f) lp.screenBrightness = .01f; 
 w.setAttributes (lp); 
 updateTextLabel (); 
 } 

6. Sist men ikke minst vil oppdateringstekstetikettmetoden vise lysstyrkeverdien for verden som et lettlest heltall.

 private void updateTextLabel () { 
 ((TextView) findViewById (R.id. Text_display )). SetText (Heltall til String (lysstyrke)); 
 } 
Appen er klar til å kompilere og utføre ( figur A ). Det vil ikke ha noen effekt på en emulator, så hvis du vil se bakgrunnsbelysningen endres, må du laste den ned til en faktisk telefon eller nettbrett. Hvis du la merke til den angitte lysstyrkefunksjonen, har jeg lagt noen beskyttelsesforskrifter der for å prøve å holde skjermen i å gå så mørk at den ikke kan leses, men som tidligere nevnt er vi ikke i stand til å holde LCD-innstillingene uansett. Figur A

Hvis det noen gang var et tilfelle der du ønsket at applikasjonen din skulle endre bakgrunnsbelysningsverdien på hele plattformen, lar Android SDK dette gi deg at du ber om "skriveinnstillinger" -tillatelsen i manifestet ditt. Imidlertid vil jeg tenke lenge og hardt på å skrive en app som endrer atferden til enhetssystemet bredt. Som en tommelfingerregel vil jeg at brukere skal administrere applikasjonsinnstillingene mine fra appen min, og systeminnstillingene fra Android-systemmenyene.

© Copyright 2021 | pepebotifarra.com