Basegameutils in mehreren Activitys

  • Antworten:29
  • Bentwortet
Gelöschter Account
  • Forum-Beiträge: 44

23.09.2014, 12:13:27 via Website

So im Hauptbildschirm habe ich mein Login button eingebaut (funktioniert auch der Login).

public class Home extends BaseGameActivity implements View.OnClickListener{

Soweit so gut.

wenn ich die Punkte oder Erfolge an Google übermitteln will in einer anderen Activity (sprich in der zweiten Activity ist mein Spielbildschirm)

muss ich dann:

public class Spiel extends Home implements View.OnClickListener {

oder

public class Spielextends Activity implements View.OnClickListener {

oder

public class Spiel extends BaseGameActivity implements View.OnClickListener {

bezeichnen?

bei den ersten beiden stürzt das Spiel ab wenn ich die SpielActivity aufrufe.

beim letzteren will er das ich:

 public void onSignInSucceeded() {
    findViewById(R.id.sign_in_button).setVisibility(View.GONE);
    findViewById(R.id.sign_out_button).setVisibility(View.VISIBLE);
}

@Override
public void onSignInFailed() {
    findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
    findViewById(R.id.sign_out_button).setVisibility(View.GONE);
}

einfüge. dann logt er sich ja nochmal ein.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.09.2014, 12:39:07 via App

Hallo homerdj,
leider habe ich deine Problematik nicht ganz verstanden.
Könntest du das bitte etwas genauer beschreiben?

LG Pascal

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

Antworten
Gelöschter Account
  • Forum-Beiträge: 44

23.09.2014, 12:44:36 via Website

habe die Spiel Activity und die hauptbildschirm(home) Activity.

in der home Activity ist der login button für google+ play service.

meine Home Ativity lautet (aufgrund weil ich BaseGameUtils einbinden muss für G+ login)

public class Spiel extends Home implements View.OnClickListener {

Meine Frage, wie muss ich es realisieren das meine zweite Activity (Spielbildschirm) merkt das ich schon eingeloggt bin?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.09.2014, 13:00:50 via App

Hier stehts drinne: https://developers.google.com/games/services/training/signin

Falls du das nicht so machen willst könntest du auch einfach ein Login flag setzen.

— geändert am 23.09.2014, 13:01:22

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

Antworten
Gelöschter Account
  • Forum-Beiträge: 44

23.09.2014, 13:03:15 via Website

Login flag?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.09.2014, 13:04:49 via App

Ja eigentlich eine stink normale Boolean Variable die den Login status angibt.

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

Antworten
Gelöschter Account
  • Forum-Beiträge: 44

23.09.2014, 13:04:48 via Website

wenn ich das nach google mach logt er sich jedes mal bein start der spiel activity nochmal ein.. das ich die Haupactivity (Home) auf BaseGameUtil umstelle für den login ist mir bewusst. aber was mach ich mit den anderen Activitys?

Antworten
Gelöschter Account
  • Forum-Beiträge: 44

23.09.2014, 13:05:28 via Website

Pascal P.

Ja eigentlich eine stink normale Boolean Variable die den Login status angibt.

Beispiel? Komme nicht nach was du gerade meinst. bzw. versteh ich das gerade nicht.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.09.2014, 13:06:49 via App

Entweder alle auf BaseGameActivity umstellen oder aus der Home das Richtige Objekt zu verfügung stellen.

Oder ein Login flag nutzen

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

Antworten
Gelöschter Account
  • Forum-Beiträge: 44

23.09.2014, 13:11:14 via Website

wenn ich alle auf basegameactivity umstelle logt er sich immer ein weil dafür er wieder den code will:

 public void onSignInSucceeded() {
findViewById(R.id.sign_in_button).setVisibility(View.GONE);
findViewById(R.id.sign_out_button).setVisibility(View.VISIBLE);

}

@Override
public void onSignInFailed() {
findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
findViewById(R.id.sign_out_button).setVisibility(View.GONE);
}

mach ich basegameactivity abstract, stürzt das programm ab.

Wie kann ich ein objekt richtig aus der home zur verfügung stellen?

oder ein login glag nutzen?

weil wenn ich

Games.Achievements.unlock(getApiClient(), "my_achievement_id");

einsetzte ohne irgendwas dann meckert die logcat am getApiClient rum

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.09.2014, 13:14:49 via App

Bitte poste mal den kompletten Code deiner Login Activity

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

Antworten
Gelöschter Account
  • Forum-Beiträge: 44

23.09.2014, 13:30:10 via Website

package com.spiel.dasspiel.spiel;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.google.android.gms.games.Games;
import com.google.example.games.basegameutils.BaseGameActivity;

public class Home extends BaseGameActivity implements View.OnClickListener{

@Override
public void onClick(View view) {
    if (view.getId() == R.id.sign_in_button) {
        beginUserInitiatedSignIn();
    }
    else if (view.getId() == R.id.sign_out_button) {
        signOut();
        findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
        findViewById(R.id.sign_out_button).setVisibility(View.GONE);
    }
}
public void onSignInSucceeded() {
    findViewById(R.id.sign_in_button).setVisibility(View.GONE);
    findViewById(R.id.sign_out_button).setVisibility(View.VISIBLE);
}

@Override
public void onSignInFailed() {
    findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
    findViewById(R.id.sign_out_button).setVisibility(View.GONE);
}

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

    findViewById(R.id.sign_in_button).setOnClickListener(this);
    findViewById(R.id.sign_out_button).setOnClickListener(this);



    Button spielstarten = (Button) findViewById(R.id.spielstarten);
    Button erfolge = (Button) findViewById(R.id.erfolge);
    Button bestenliste = (Button) findViewById(R.id.bestenliste);

    spielstarten.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent in = new Intent
                    (Home.this, spielstarten.class);
            startActivity(in);
        }
    });

    erfolge.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                    startActivityForResult(Games.Achievements.getAchievementsIntent(
                    getApiClient()), 1);           
        }
    });

    bestenliste.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                    startActivityForResult(Games.Leaderboards.getLeaderboardIntent(
                            getApiClient(), getString(R.string.leaderboard_richtige_aufgaben)), 2);
        }   
    });
}

}

Antworten
Gelöschter Account
  • Forum-Beiträge: 44

23.09.2014, 13:33:04 via Website

das klappt ja..aber wie kann ich aus einer anderen activity scroe an die google bestenliste schicken?

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.09.2014, 13:34:07 via App

Ich würde eine public ststic boolean setzen.
Und je nach login status deren Wert ändern.
Auf die andere Art ist es zu kompliziert.

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

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.09.2014, 13:35:23 via App

Soweit ich weiss geht schicken auch nur aus BaseGame Activities. Entweder du nutzt deine Home dafür oder machst extra eine

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

Antworten
Gelöschter Account
  • Forum-Beiträge: 44

23.09.2014, 13:42:26 via Website

meinst die punktezahl in einen string schreiben und in der home den string auslesen und verschicken

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

23.09.2014, 17:20:45 via App

Genau damit sollte das auch gehen.

— geändert am 23.09.2014, 17:20:55

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

Antworten
Gelöschter Account
  • Forum-Beiträge: 44

23.09.2014, 21:48:13 via Website

Blöd mit:

Games.Achievements.unlock(getApiClient(), "my_achievement_id");

Stürzt meine app ab

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

24.09.2014, 05:27:46 via App

Was sagt LogCat dazu?

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

Antworten
Gelöschter Account
  • Forum-Beiträge: 44

24.09.2014, 06:53:01 via Website

Pascal P.

Was sagt LogCat dazu?

Logcat hab ich nicht angeschaut. Da wenn ichdie app überandroid studio starte nicht signiert ist und da schon kein login möglich ist. Aber ich probier das mal und lad die Logcat hoch

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

24.09.2014, 07:00:03 via App

Danke aber nur die Roten Zeilen. Der rest ist uninteressant.
Zudem kannst du versuchen die App auf einem Richtigen Gerät zubtesten
Die Emulatoren sind inndieser Hinsicht etwas unhandlich

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

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.961

24.09.2014, 07:54:17 via App

homerdj

Pascal P.

Was sagt LogCat dazu?

Logcat hab ich nicht angeschaut. Da wenn ichdie app überandroid studio starte nicht signiert ist und da schon kein login möglich ist. Aber ich probier das mal und lad die Logcat hoch

Wer erzählt sowas mit wenn nicht signiert funktioniert kein login. Die APP wird außerdem beim debug grundsätzlich signiert nennt sie debugsignatur.

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Antworten
Gelöschter Account
  • Forum-Beiträge: 44

24.09.2014, 07:54:55 via Website

Mach nur mit richtigen Geräten :) emu ist zu langsam :)

Antworten
Gelöschter Account
  • Forum-Beiträge: 44

24.09.2014, 08:44:08 via Website

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.spiel.dasspiel.spiel/com.spiel.dasspiel.spiel.Home}: java.lang.IllegalStateException: GoogleApiClient is not connected yet.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2092)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2117)
at android.app.ActivityThread.access$700(ActivityThread.java:134)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1218)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4867)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: GoogleApiClient is not connected yet.
at com.google.android.gms.internal.hm.a(Unknown Source)
at com.google.android.gms.common.api.c.b(Unknown Source)
at com.google.android.gms.games.internal.api.AchievementsImpl.unlock(Unknown Source)
at com.spiel.dasspiel.spiel.Home.onCreate(Home.java:167)
at android.app.Activity.performCreate(Activity.java:5047)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2056)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2117)
            at android.app.ActivityThread.access$700(ActivityThread.java:134)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1218)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4867)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
            at dalvik.system.NativeStart.main(Native Method)
22235-22308/com.spiel.dasspiel.spiel E/GooglePlayServicesUtil﹕ The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.961

24.09.2014, 10:08:16 via App

homerdj

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.spiel.dasspiel.spiel/com.spiel.dasspiel.spiel.Home}: java.lang.IllegalStateException: GoogleApiClient is not connected yet.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2092)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2117)
at android.app.ActivityThread.access$700(ActivityThread.java:134)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1218)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4867)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalStateException: GoogleApiClient is not connected yet.
at com.google.android.gms.internal.hm.a(Unknown Source)
at com.google.android.gms.common.api.c.b(Unknown Source)
at com.google.android.gms.games.internal.api.AchievementsImpl.unlock(Unknown Source)
at com.spiel.dasspiel.spiel.Home.onCreate(Home.java:167)
at android.app.Activity.performCreate(Activity.java:5047)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2056)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2117)
            at android.app.ActivityThread.access$700(ActivityThread.java:134)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1218)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4867)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
            at dalvik.system.NativeStart.main(Native Method)
22235-22308/com.spiel.dasspiel.spiel E/GooglePlayServicesUtil﹕ The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.

steht alles da du hast der lieb nicht richtig eingebunden!

und was steht in der home.Java Zeile 167?

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Antworten
Gelöschter Account
  • Forum-Beiträge: 44

24.09.2014, 10:21:15 via Website

Games.Achievements.unlock(getApiClient(), "my_achievement_id");

"my_achievement_id" ist meine achievemnt id.

wie nicht richtig eingebunden? sonst geht doch der login nomalerweise nicht oder? :O

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.961

24.09.2014, 10:22:59 via App

The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.

Da steht es doch oder lese ich das falsch?!?!

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Antworten
Gelöschter Account
  • Forum-Beiträge: 44

24.09.2014, 10:59:13 via Website

also nochmal zur Erklärung:

Wenn ich eine signierte debuk APK erstelle kann ich mich nicht einloggen, da es eine release APK sein muss ( auf handy steht "can not sign in, Please Check your Project or internet connection"

erstelle ich eine release geht alles, seh aber keine logcat. da alles was ich über Android studio mache nur debug ist. GooglePlay unterstütz kein debug mode. Zumindest bei mir nicht.

aber sobald ich ein release apk erstelle geht alles, nur kann keine punkte oder erfolge schicken bzw. freischalten.

22235-22308/com.spiel.dasspiel.spiel E/GooglePlayServicesUtil﹕ The Google Play services resources were not found. Check your project configuration to ensure that the resources are included.

das erscheint glaub nur wenn er sich einloggen will in den Google Account.

— geändert am 24.09.2014, 11:00:21

Antworten
Gelöschter Account
  • Forum-Beiträge: 44

24.09.2014, 14:49:26 via Website

Fehler gefunden. Hab vergessen das die Erfolge Inkrementelle Erfolge sind und somit der code:

Games.Achievements.increment(getApiClient(), "my_achievement_id",1);

lauten muss :D

— geändert am 24.09.2014, 15:13:20

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

24.09.2014, 14:54:03 via Website

Gut dass es geklappt hat :)
Bitte setzte deinen Post dann noch auf beantwortet. (Dafür über deinem ersten Post auf "Mehr"->"Thread auf Beantwortet setzen";)

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

Antworten