Detecting successful Google Play login on Libgdx screen

LibGdx Android Application

I am trying to login to Google Play from libgdx screen using actionResolver.loginGPGS () which is in Activity AndroidLauncher. The actual login process happens in Activity-AndroidLauncher and onSignInSucceeded () is called after successful login.

Question: I need to have some setup so that the new method on the Libgdx - StartScreen will be activated upon successful login to Google Play. I ask for advice.

StartScreen

public class StartScreen extends Screen implements InputProcessor,OnCompletionListener {

public StartScreen(ActionResolver actionResolver, String KEYSTATE)  {  
}

@Override
public void create() {
}

@Override
public void update() { 
}

@Override
public void render(SpriteBatch sb) { 
    batch=sb;
    sb.setProjectionMatrix(camera.combined);
    sb.begin();   
    sb.draw(BACKGROUND,0,0,MainGame.SCREEN_WIDTH,MainGame.SCREEN_HEIGHT);   
    showButtons(); 
    sb.end();
    handleInput(); 
}

@Override
public void resize(int width, int height) { 
    camera.resize();
} 

@Override
public void dispose() {   
}


@Override
public void pause() { 
    gameMusic.pause();
    System.out.println("StartScreen - pause");
}

@Override
public void resume() {
}


private void showButtons() {  
}

private void handleInput() {   
    if(Gdx.input.isTouched()) {   
        Vector3 touchPosition = new Vector3(Gdx.input.getX(), Gdx.input.getY(), 0);
        camera.unproject(touchPosition);   
        if(!exitButtonTouched){ 
            // Exit Button
            if(touchPosition.x >= xMargin && touchPosition.x <= xMargin + EXIT.getWidth() &&
               touchPosition.y >= yMargin && touchPosition.y <= yMargin + EXIT.getHeight()  ) {   
                actionResolver.loginGPGS(); 
            }  
        }
    }
}

      

AndroidLauncher

public class AndroidLauncher extends AndroidApplication implements GameHelperListener,ActionResolver {


@Override
public void loginGPGS() {
    try {
        runOnUiThread(new Runnable(){
            public void run() {
                gameHelper.beginUserInitiatedSignIn();
            }
        });
    } catch (final Exception ex) {
    }
}



@Override
public void onSignInFailed() {
    System.out.println("- - - AndroidLauncher - - - onSignInFailed");
}

@Override
public void onSignInSucceeded() {
    System.out.println("- - - AndroidLauncher - - - onSignInSucceeded");
} 
}

      

ActionResolver

 public interface ActionResolver {
  public void showOrLoadInterstital();  
    public boolean getSignedInGPGS();
    public void loginGPGS();
    public void submitScoreGPGS(int score);
    public void unlockAchievementGPGS(String achievementId);
    public void getLeaderboardGPGS();
    public void getAchievementsGPGS();  
    public void setFinish();   
}

      

+3


source to share


1 answer


Save a pointer to your Libgdx game when you create it:

game = new Game(this);
initialize(game, config);

      

Then just call any of the game methods from onSignInSucceeded



@Override
public void onSignInSucceeded() {
    System.out.println("- - - AndroidLauncher - - - onSignInSucceeded");
    game.switchScreensOrWhatever();
} 
}

      

Ask this method to activate everything you need to do in LibGdx

0


source







All Articles