Android Studio Java: Lichthelligkeit messen

Du möchtest eine App für Android zum Messen der Lichthelligkeit mit Java programmieren? Dann bist Du hier genau richtig!

Erstelle dafür als erstes ein neues Projekt in Android Studio, so wie ich es Dir hier erklärt habe.

Gehe nun in die activity_main.xml Datei. Bearbeite das hier vorhandene Element “TextView”. Füge eine ID hinzu und ändere ggf. den Text. Die Datei sollte nun wie folgt aussehen:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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:id="@+id/currentLightInLuxTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Helligkeit"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

Jetzt wagen wir uns an den Java-Code. Öffne dafür die MainActivity.java Datei. Hier solltest Du folgenden Code einfügen:

import android.app.Service;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements SensorEventListener {

    TextView currentLightInLuxTextView;

    SensorManager sensorManager;

    Sensor sensor;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        currentLightInLuxTextView = (TextView) findViewById(R.id.currentLightInLuxTextView);

        sensorManager = (SensorManager) getSystemService(Service.SENSOR_SERVICE);

        sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
    }

    @Override
    protected void onPause() {
        super.onPause();
        sensorManager.unregisterListener(this);
    }

    @Override
    protected void onResume() {
        super.onResume();
        sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        if (event.sensor.getType() == Sensor.TYPE_LIGHT){
            currentLightInLuxTextView.setText("" + event.values[0]);
        }
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }
}

Jetzt kannst Du die App testen und sie sollte die Helligkeit vom Lichtsensor anzeigen, so wie es in dem Bild unten zu sehen ist.

Wenn Du noch Fragen oder Optimierungen zum Code hast, kannst Du sie gerne in einem Kommentar schreiben. Mich würde sehr interessieren, wie Du diese Funktion in eine App integrierst!

Jan

Jan

Ich bin Jan und ich freue mich, dass Du meinen Blog gefunden hast. Ich blogge in meiner Freizeit über Smart Home, 3D Druck und Technik und versuche, Dir mit meinen Beiträgen möglichst gut zu helfen.

Alle Beiträge ansehen von Jan →

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.