Google Play游戏服务 - 无法在下次活动中提交分数

时间:2014-02-27 08:05:22

标签: android google-play-services

以下是使用BaseGameUtils Library和Google Play服务库实现的两项活动[实际问题转到此代码的末尾]。   这是活动A

        import com.google.example.games.basegameutils.BaseGameActivity;

        public class A extends BaseGameActivity {

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
            }
        //button to start play managed from layout
            public void startPlay(View view) {

                startActivity(new Intent(A.this, B.class));
            }


    // from layout i m managing signin onclick
            public void signInControl(View view) {

                beginUserInitiatedSignIn();
            }
        // from layout i m managing signout onclick
            public void signOutControl(View view) {

                signOut();

                // show sign-in button, hide the sign-out button
                findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
                findViewById(R.id.sign_out_button).setVisibility(View.GONE);

            }

            @Override
            public void onBackPressed() {
                Intent intent = new Intent(Intent.ACTION_MAIN);
                intent.addCategory(Intent.CATEGORY_HOME);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(intent);
            }

            @Override
            public void onSignInFailed() {

                findViewById(R.id.sign_in_button).setVisibility(View.VISIBLE);
                findViewById(R.id.sign_out_button).setVisibility(View.GONE);

            }

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

            }

        }

现在我的下一个活动B

import com.google.example.games.basegameutils.BaseGameActivity;

public class B extends BaseGameActivity {
    int MY_SCORE = 1000;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main2);

        subMitScore();//

    }

    private void subMitScore() {
        // TODO Auto-generated method stub

        if (isSignedIn()) {

            getGamesClient().submitScore(
                    getString(R.string.leaderboard_total_scores), MY_SCORE);
        } else {
            Log.d("not signed", "Not signed in");
        }

    }

    @Override
    public void onSignInFailed() {
        // TODO Auto-generated method stub
        Log.d("sigin failed", "inside on onSignInFailed");

    }

    @Override
    public void onSignInSucceeded() {
        // TODO Auto-generated method stub
        Log.d("sigin succeded", "inside on onSignInSucceeded");
    }

}

使用上面的代码可以成功登录到活动A的谷歌游戏中心,这是一个BaseGameActivity,我需要在活动B提交我的分数,这也是一个BaseGameActivity,但是在活动B内我总是得到isSignedIn()为假,所以submitscore代码永远不会被调用所以我的确切问题是我如何从活动B提交我的游戏分数,因为我的游戏在活动B结束,我的总得分在B。

注意:尝试了来自 - herehere但未获得任何结果的解决方案。

**

  

修改

**

刚编辑的活动B代码

在onSignInsucceeded()

中调用了subMitScore()方法

@Override
    public void onSignInSucceeded() {
        // TODO Auto-generated method stub

            submitScore()


    }

以前我的onSignInSucceeded()没有被调用[不确切知道为什么]但是上面的东西解决了我的问题。

1 个答案:

答案 0 :(得分:1)

您在Activity onCreate方法中提交了分数。在活动生命周期中的那一点,Google Play游戏服务客户端未连接,它将在稍后连接。尝试稍后提交分数(例如在onSignInSucceeded方法中)。

一般来说,以这种方式提交分数可能不是一个好主意。游戏结束后,在正常的游戏过程中提交分数&活动运行时间。