Tag 12 – Halbzeit

veröffentlicht am: 12. Dezember 2012

day12Und schon ist die Hälfte der Adventszeit vorbei.

Heute werden wir uns ein bisschen mit der Hardware auseinandersetzen, die nur bei Android-Geräten verfügbar ist.

Hardware-Tasten

Die meisten Android-Smartphones besitzen Hardware-Tasten, wie Menü, Zurück oder die Lautstärke-tasten.
Normalerweise ist die zurück-Taste mit dem Beenden der App verknüpft und beim längeren Drücken auf die Menü-Taste wird die OnScreen-Tastatur aufgerufen. Wenn man das verhindern will und stattdessen bei Zurück oder Menü ins Pause-Menü wechseln will, muss man die Standartreaktion wie folgt unterdrücken:

Gdx.input.setCatchBackKey(true);
Gdx.input.setCatchMenuKey(true);
// [...]
if (Gdx.input.isKeyPressed(Keys.BACK) || Gdx.input.isKeyPressed(Keys.MENU)){

Beschleunigungssensor

Viele Android-Smartphones haben auch einen Beschleunigungssensor. Über ihn kann man die Drehung abfragen.

Wenn einen nur die Orientierung interessiert, geht das wie folgt (mögliche Werte: 0,90,180,270):

int orientation = Gdx.input.getOrientation();

Man kann allerdings auch die genauen Werte auf allen Achsen abfragen:

if( Gdx.input.isPeripheralAvailable(Peripheral.Accelerometer) ){
	float accelX = Gdx.input.getAccelerometerX();
	float accelY = Gdx.input.getAccelerometerY();
	float accelZ = Gdx.input.getAccelerometerZ();
}

Kompass

if(Gdx.input.isPeripheralAvailable(Peripheral.Compass)){
	float azimuth = Gdx.input.getAzimuth();
	float pitch = Gdx.input.getPitch();
	float roll = Gdx.input.getRoll();
}

Die Winkel des Kompass sind im Gradmaß angegeben.

Vibrator

Um den extrem wichtigen Vibrator zu nutzen (hab immer noch keine Ahnung, wer das braucht :P), muss man im android-Projekt die android.permission.VIBRATE Berechtigung hinzufügen. (mehr dazu)

Nun können wir den Vibrator entweder eine Sekunde lang vibrieren lassen…

Gdx.input.vibrate(1000);

Oder wir lassen ihn 200 Millisekunden dann 400 Millisekunden stoppen und dann wieder 300 Millisekunden an sein.

Gdx.input.vibrate(new long[] { 0, 200, 400, 300}, -1); 

Außer haptischem Feedback (was ich noch nirgendwo ordentlich implementiert gefunden habe), kann ich mir irgendwie keinen weiteren Nutzen hierfür ausdenken.

Mauszeiger

Am Desktop möchten wir manchmal den Mauszeiger in der Mitte des Fensters gefangen halten. (gerne Benutzt bei 3D-Spielen in der Ego-Perspektive)

Gdx.input.setCursorCatched(true);

Außerdem können wir den Mauszeiger an eine bestimmte Position setzen.

Gdx.input.setCursorPosition(x, y);

Ich hab noch ein paar Sachen für den Rest der Adventszeit geplant (unter anderem Kollisionsabfrage).
Falls dir noch irgendetwas fehlt, du gerne etwas wissen würdest, oder du Features von libgdx kennst, die ich kennen sollte, schreib ein Kommentar!

geposted in libgdx

Eine Antwort zu “Tag 12 – Halbzeit”

  1. RUB sagt:

    Thx for your tutorials. Im especially interested in per-pixel-collisions examples with or without rotated sprites. Maybe you could write a tutorial about this topic. That would be great.
    Best Regards
    Rub

Schreibe einen Kommentar

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