~Java4Beginners~
~Java4Beginners~

Java-Code

In diesem Bereich werde ich näher auf den Java-Code eingehen, den wir für die Lauffähigkeit unserer App benötigen. Am Anfang werde ich den kompletten Code auflisten, welcher dann Punkt für Punkt in seine Einzelteile zerlegt wird.

Klasse MainActivity.java


package de.java4beginners.lautsprechermodus;

import android.media.AudioManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {
    AudioManager audioManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
        setContentView(R.layout.activity_main);
        LinearLayout contentview = (LinearLayout) findViewById(R.id.content);
        contentview.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                RingerHelper.performToggle(audioManager);
                updateUI();
            }
        });
    }
    private void updateUI()
    {
        ImageView imageView = (ImageView) findViewById(R.id.phone_icon);
        int phoneImage = RingerHelper.isPhoneSilent(audioManager)
                ? R.drawable.lautsprecher_aus
                : R.drawable.lautsprecher_an;
        imageView.setImageResource(phoneImage);
    }

    @Override
    protected void onResume()
    {
        super.onResume();
        updateUI();
    }
}

Klasse RingerHelper


package de.java4beginners.lautsprechermodus;

import android.media.AudioManager;
import android.provider.MediaStore;

/**
 * Created by Markus Badzura on 17.05.2017.
 */

public class RingerHelper
{
    private RingerHelper() {}

    public static void performToggle(AudioManager audioManager)
    {
        audioManager.setRingerMode(
                isPhoneSilent(audioManager)
                ? AudioManager.RINGER_MODE_NORMAL
                : AudioManager.RINGER_MODE_SILENT);
    }
    public static boolean isPhoneSilent (AudioManager audioManager)
    {
        return audioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT;
    }
}

Die Bedeutung des Java-Codes

Ausführlichere Beschreibungen zu den verschiedenen Themen sind unter dem Kapitel Activities zu finden.
Quellcode Bedeutung
package de.java4beginners.lautsprechermodus; Dies verhält sich wie Java. Das package gibt an, in welchen Projektbereich wir uns innerhalb unseres großen Projektes befinden, und welche Dateien untereinander bekannt sein sollen, ohne importiert zu werden.
import android.media.AudioManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
Die für die Anwendung notwendigen Pakete werden eingebunden.
public class MainActivity extends AppCompatActivity { Klassendeklaration und Ableitung von der Superklasse AppCompatActivity (früher nur Activity)
AudioManager audioManager; Deklaration einer Objektvariablen vom Objekttyp AudioManager.
@Override
protected void onCreate(Bundle savedInstanceState) {
Unsere Einsteigsmethode onCreate(). Muss überschrieben werden
super.onCreate(savedInstanceState); Ruft aus der Superklasse die Methode onCreate() auf und übergibt den Parameter savedInstanceState.
audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); Unser audioManager-Objekt erhält den SystemSErvice Audio. Damit können wir später dann z. B. die Zustand des Lautsprechermodus erhalten.
setContentView(R.layout.activity_main); Aktiviert das Layout aus der xml-Datei activity_main. R.java ist die Klasse, die unsere ID's verwaltet.
LinearLayout contentview = (LinearLayout) findViewById(R.id.content); Die View vom Typ LinearLayout findet, welche die id "content" hat. wurde in der activity_main.xml als id für unser LinearLayout vergeben.
contentview.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
RingerHelper.performToggle(audioManager);
updateUI();
}
});
setOnClickListener ist das Ereignis-Event, welches ausgeführt wird, wenn auf die View getippt wird.
RingerHelper.performToggle(audioManager); Die Klasse RingerHelper wird aufgerufen und der Methode performToggle in dieser Klasse unser audioManager-Objekt übergeben.
updateUI(); Die Klassenmethode updateUI() wird aufgerufen. (Aktualisierung der Benutzeroberfläche)
private void updateUI() Deklaration der Methode UpdateUI(). Da diese Methode private deklariert ist, ist nur ein Zugriff aus unserer MainActivity.java aus möglich.
ImageView imageView = (ImageView) findViewById(R.id.phone_icon); Die View vom Typ ImageView und der id "phone_icon" finden.
int phoneImage = RingerHelper.isPhoneSilent(audioManager)
? R.drawable.lautsprecher_aus
: R.drawable.lautsprecher_an;
Sozusagen eine Wenn ? Dann : Sonst - Situation. Wenn die Methode isPhoneSilent aus der Klasse RingHelper das Ergebnis liefert, dass das Smartphone sich im Lautlos - Modus befindet, dann lade das Bild lautsprecher_aus, ansonsten lade das Bild lautsprecher_an.
R.drawable.lautsprecher_aus R steht für die Klasse R.java (welche unsere ganzen Ressourcen-ID's verwaltet). drawable sind unsere ganzen Ordner drawabels. Mit R.drawable.lautsprecher_aus wird unsere Ressource lautsprecher_aus.png angesprochen.
@Override
protected void onResume()
{
super.onResume();
updateUI();
}
Die Methode onResume wird aufgerufen, wenn die Aktivität bereit ist für Benutzerinteraktion. Erste Amtshandlung hier ist der Aufruf der Methode updateUI(), um das richtige Bild zu setzen.
private RingerHelper() {} Der Konstruktor wird auf private gesetzt, damit kein Zugriff von Java-Klassen ausserhalb unseres packages erfolgen kann.
public static void performToggle(AudioManager audioManager) Diese Methode wird von der MainActivity aufgerufen und dient dazu, den Lautsprechermodus zu ändern.
audioManager.setRingerMode setRingerMode ist die Methode des AudioManagers, um den Lautsprechermodus zu ändern.
isPhoneSilent(audioManager) Es wird geprüft, ob das Telefon auf lautlos geschalten ist.
? AudioManager.RINGER_MODE_NORMAL Wenn ja, Ton aktivieren (RINGER_MODE_NORMAL)
: AudioManager.RINGER_MODE_SILENT); Wenn nein, dann Ton auf lautlos stellen (RINGER_MODE_SILENT)
public static boolean isPhoneSilent (AudioManager audioManager) Prüfumethode mit dem Rückgabewert boolean, ob Telefon lautlos geschalten ist.
return audioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT; Wenn die Methode getRingerMode() als Ergebnis bekommt, dass es lautlos ist (AudioManager.RINGER_MODE_SILENT), wird true zurückgegeben, ansonsten false.
Soviel zu unserem Quellcode für unsere Lautsprechermodus-App. Code-mässig ist es nicht sonderlich schwierig, wenn die Grundkenntnisse von Java vorhanden sind. Es ist halt eine Umgewöhnung notwendig in der Syntax. Sobald dies allerdings geschehen ist und auch die Methoden-Struktur innerhalb einer Aktivität klar ist, kann man sich schon an größere App-Projekte wagen.
nach oben Java4Beginners -- Seitenversion 1.0 -- Stand: 2017-05-17