Apps für Android programmieren leicht gemacht!
Akku Temperatursensor

Akku Temperatursensor

Wer es in seiner Android App für nötig hält den Akku Temperatursensor auszulesen ist hier genau richtig.

In diesem Artikel lernst du, wie man eben diesen Akku Temperatursensor auslesen kann.
Dabei wird die Temperatur in Grad Celsius ausgegeben und das auch nur, wenn das Handy über einen Temperatursensor verfügt. Also falls das Auslesen ohne Erfolg bleibt, dann liegt das wohl oder übel an einem fehlenden Sensor. Dann hat der Hersteller an dieser Ecke gespart.

Vielleicht sollte ich noch vorweggreifen, dass mindestens ein API Level von 5 erreicht werden muss. Dies entspricht der Android Version 2.0 Eclair.

Berechtigungen sind übrigens ebenfalls nicht nötig.

Als erstes benötigen wir ein Layout, welches all unsere benötigten Informationen anzeigen lassen kann.
Dazu könnt ihr einfach folgendes Layout benutzen:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/hello_world"
        android:id="@+id/textView"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="@string/hello_temperatur"
        android:id="@+id/textView2"
        android:layout_below="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="40dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="Small Text"
        android:id="@+id/temperatur"
        android:layout_alignTop="@+id/textView2"
        android:layout_toRightOf="@+id/textView2"
        android:layout_toEndOf="@+id/textView2"
        android:layout_marginLeft="10dp" />
</RelativeLayout>

Das genaue Aussehen obliegt natürlich eurer Kreativität.

 

Im nächsten Schritt deklarieren wir eine Variable in unserer Hauptklasse, in die wir später unsere Temperatur eintragen können.

TextView TemperaturText;

Und dann noch in unsere Funktion „onCreate“:

//setzt das TextView, in dem die Temperatur ausgegeben werden soll, in eine Variable
TemperaturText = (TextView) findViewById(R.id.temperatur);
TemperaturText.setText("0");

 

Anschließend benötigen wir einen sogenannten Receiver.
Dieser Receiver wird von uns registriert und reagiert fortan auf alle Dinge, die mit dem Akku passieren.
Beispielsweise wird unsere App benachrichtigt, wenn dar Akku herausgenommen wird oder sich der Ladestatus ändert. Natürlich werden wir auch über eine sich verändernde Temperatur des Akkus informiert.
Wir schreiben folgendes in die Funktion „onCreate“:

//erstellt einen Receiver, der immer reagiert, wenn sich etwas bei dem Akku ändert (Akkuladung, Temperatur, Ladestatus, etc.)
this.registerReceiver(this.akkuReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

 

Schlussendlich benötigen wir noch, die eben definierte Klasse „akkuReceiver“.
Diese Klasse reagiert, wenn Android unsere App informiert.

//diese erstellte Klasse reagiert, auf den soeben erstellten Receiver
private BroadcastReceiver akkuReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

        //gibt den Wert in Grad Celsius wieder, aber ohne Komma
        int temperatur = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE,0);

        //wandelt den Wert in Grad Celsius, mit Komma um
        float genaueTemperatur = ((float) temperatur) / 10;

        //gibt den genauen Temperaturwert aus
        TemperaturText.setText(genaueTemperatur + " in Celsius");
    }
};

 

Ab diesem Zeitpunkt wird die Funktion „onReceive“, in der Klasse „akkuReceiver“, immer ausgeführt, wenn sich etwas mit dem Akku ändert. Behaltet eure App mal ein wenig offen und seht zu, wie sich die Temperatur ändert.

Sollte euer Smartphone keinen Temperatursensor des Akkus besitzen, wird euch eine Null angezeigt.

Akku Temperatursensor


Lade dir den Source Code zu diesem Artikel kostenlos herunter und lerne, wie du den Temperatursensor deines Akkus auslesen kannst.

DownloadLizenzbedingungen

Marvin

Ich bin 23 Jahre jung und studiere zurzeit Wirtschaftsinformatik an der Georg-August-Universität in Göttingen. Ich bin ein Mensch, der sich neben der Programmierung noch für tausend andere Dinge interessiert, die mal mehr und mal weniger verrückt sind. Vor allem aber bin ich Feuer und Flamme mit der Programmierung von eigenen kleinen Apps und Programmen, die mein Leben bereichern.

Kommentar hinzufügen

*Pflichtfeld