Android Zeit verwenden

  • Antworten:21
  • OffenNicht stickyNicht beantwortet
  • Forum-Beiträge: 87

01.07.2015, 15:32:59 via Website

Hallo ich würde gerne wiessen wie man die zeit in android studio nutzen kann also z.b nach zwanzig minuten kriegt man wieder energie odernach 10 Stunden kriegt man Coins. hoffe mir kann jemand helfen

Antworten
  • Forum-Beiträge: 1.904

01.07.2015, 20:04:02 via App

Du kannst die Zeit speichern, wenn die App geschlossen wird und diese dann mit der aktuellen Zeit beim Öffnen der App vergleichen und ausrechnen, wieviel Coins der Spieler bekommen soll. Der Spieler könnte die Zeit im Handy aber auch manuell ändern. Um das zu verhindern, könntest du über Internet die korrekte Zeit abfragen. Damit hätte die App aber Internetzwang.

Ps: Sehe ich deinen Namen in der App falsch oder hat dich Ludy fälschlicherweise Creater genannt?

— geändert am 01.07.2015, 20:05:14

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
  • Forum-Beiträge: 87

01.07.2015, 20:52:54 via Website

Ich hab mich zu sebbi umgenannt und wie kann ich das anstellen das er die Zeit vergleicht also ohne internet:)

Antworten
  • Forum-Beiträge: 87

01.07.2015, 20:53:41 via Website

Also was für einen Code muss ich da verwenden

Antworten
  • Forum-Beiträge: 72

02.07.2015, 01:59:19 via Website

Du kannst mit

Calender calender = new GregorianCalender();
Long timeinms = calender.getTimeInMillis();

die Zeit in ms auslesen.
Diese könntest du dann z.B. in den SharedPreferences speichern und beim App Start vergleichen.

Antworten
  • Forum-Beiträge: 87

02.07.2015, 16:47:34 via Website

Ich habe den Code eingefügt und eine If clauses hinzugefügt die wenn er mehr als 120 millisecunden hat man coins kriegt. Kann mir also bitte jemand sagen was ich genau machen muss um die zeit zu verwenden

Antworten
  • Forum-Beiträge: 11.181

02.07.2015, 17:02:49 via Website

Ich versteh es nicht geau.

timeinmilis ist die Zeit in Milillisekunden seit dem 1.1.1970 als ist es UNIX TIme.
Damit musst du dann Rechnen und dann zeiten zwischenpeichern etc.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
  • Forum-Beiträge: 87

02.07.2015, 19:26:33 via Website

Das versteh ich leider nicht genau könntest du bitte einen code dazu zeigen wie das funktioniert

Antworten
  • Forum-Beiträge: 1.904

03.07.2015, 10:10:37 via App

Pseudocode:

App wird geschlossen:
Zeit abfragen, in SharedPreferences speichern

App wird geöffnet:
Aus SharedPreferences abfragen, aktuelle Zeit abfragen, vergleichen(Subtraktion), dementsprechend Coins geben

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
  • Forum-Beiträge: 87

03.07.2015, 19:20:03 via Website

public void onResume() {

    angriff1 = loadPreferences("angriff2", this); // Integer aus dem speicher laden
    angriffkosten1 = loadPreferences("angriffkosten2", this); // Integer aus dem speicher laden
    abwehr1 = loadPreferences("abwehr2", this); // Integer aus dem speicher laden
    abwehrkosten1 = loadPreferences("abwehrkosten2", this); // Integer aus dem speicher laden
    level1 = loadPreferences("level2", this); // Integer aus dem speicher laden
    erfahrung1 = loadPreferences("erfahrung2", this); // Integer aus dem speicher laden
    leben1 = loadPreferences("leben2", this); // Integer aus dem speicher laden
    lebenkosten1 = loadPreferences("lebenkosten2", this); // Integer aus dem speicher laden
    erfahrung3 = loadPreferences("erfahrung4", this); // Integer aus dem speicher laden
    zaehler1 = loadPreferences("langeweileknopf", this); // Integer aus dem speicher laden
    angriffkosten5 = loadPreferences("angriffkosten5", this); // Integer aus dem speicher laden
    fehler = loadPreferences("fehler", this); // Integer aus dem speicher laden

    super.onResume();
}


public void onPause() {


    saveToPreferences("angriff2", angriff1, this); //Inteer speichern
    saveToPreferences("angriffkosten2", angriffkosten1, this); //Inteer speichern
    saveToPreferences("level2", level1, this); //Inteer speichern
    saveToPreferences("abwehr2", abwehr1, this); //Inteer speichern
    saveToPreferences("abwehrkosten2", abwehrkosten1, this); //Inteer speichern
    saveToPreferences("leben2", leben1, this); //Inteer speichern
    saveToPreferences("lebenkosten2", lebenkosten1, this); //Inteer speichern
    saveToPreferences("erfahrung2", erfahrung1, this); //Inteer speichern
    saveToPreferences("erfahrung4", erfahrung3, this); //Inteer speichern
    saveToPreferences("langeweileknopf", zaehler1, this); //Inteer speichern
    saveToPreferences("angriffkosten5", angriffkosten5, this); //Inteer speichern
    saveToPreferences("fehler", fehler, this); //Inteer speichern

    super.onPause();
}

private int loadPreferences(String key, Context c)

{

    SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(c);
    return pref.getInt(key, 0); //gebe den gespeicherten Wert zur�ck, falls keine Vorhanden dannn Wert =0

}


private void saveToPreferences(String key, int value, Context c) {

    SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(c).edit();
    editor.putInt(key, value); //Zahl speichern

    editor.commit(); //Editierte Felder �bernehmen


}

@Override
public void onClick(View v) {
    //TODO Auto-generatedmethodstub

}

}
Immer wenn ich das hier speichern will wird angezeigt das man kein long verwenden darf nur int wieso ist das so und wie kann ich es dann mit shared preferences speichern

Antworten
  • Forum-Beiträge: 87

03.07.2015, 20:24:31 via Website

Okey des hab ich geschafft aber wie kann ich jetzt die Zeit abfragen und dann vergleichen

Antworten
  • Forum-Beiträge: 87

03.07.2015, 21:10:55 via Website

Weil ich habe versucht das ich sage dass wenn die zeit+1 ist soll er coins geben es passiert aber nicht. Deswegen würde ich gern wissen wie man vergleicht

Antworten
  • Forum-Beiträge: 1.904

04.07.2015, 10:34:40 via App

Du musst nur normal mathematisch vergleichen. Ich würde die Differenz ausrechnen, gucken ob über 0(zur Sicherheit), dann dividieren durch die Anzahl von Millisekunden in der man einen Coin bekommt, und die Ganzzahl(ohne Nachkommastellen) des Ergebnisses Coins geben(oder statt Nachkommastellen abschneiden einfach runden). 6-7 Klasse Mathe.

— geändert am 04.07.2015, 10:36:57

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
  • Forum-Beiträge: 87

04.07.2015, 12:15:11 via Website

Ja aber wie kann ich zwischen start und pause vergleichen also ich starte jetzt die app und will die differenz dann ausrechen dann kann ich ja nicht einfach eingeben timeinms=timeinms-timeinms da muss ich doch was anderes eingeben oder

Antworten
  • Forum-Beiträge: 375

04.07.2015, 14:24:25 via Website

Schau mal in den Bücher-Thread hier, dir scheinen ja noch einige allgemeine Grundlagen der Programmierung zu fehlen. Jetzt einfach nur copy & paste zu betreiben wird dich auf Dauer nicht weiterbringen.

Antworten
  • Forum-Beiträge: 87

04.07.2015, 17:25:39 via Website

Ich habe grundlagen doch dort wurde soetwas leider gar nicht erklärt

Antworten
  • Forum-Beiträge: 87

04.07.2015, 17:26:23 via Website

Deswegen würde ich mich freuen wenn mir jemand sagen kann wie es geht

Antworten
  • Forum-Beiträge: 1.904

04.07.2015, 17:33:11 via App

Okay, noch detallierter:

Beim Öffnen der App:
-aus SharedPreferences(sp) die (Zeit)zahl einer Variable(z.b. bla) zuweisen
-die aktuelle (Zeit)zahl einer Variable zuweisen(z.b. blub)
-die beiden Variablen bla und blub vergleichen(wie weiter oben beschrieben)
-dementsprechend Coins hinzufügen(also aus sp laden und dort wieder speichern, auch in Ui anzeigen)

Sebbi

Ich habe grundlagen doch dort wurde soetwas leider gar nicht erklärt

Was wurde nicht geklärt? Kontrollstrukturen/Vergleiche? Variablen?

— geändert am 04.07.2015, 17:34:54

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
  • Forum-Beiträge: 87

04.07.2015, 17:44:10 via Website

Okey danke ich habs geschafft. Ich danke dir wirlklich sehr, dass du dir Zeit genommen hast und mir geholfen hast:):D

Antworten