GamesClient no se conecta. Error: "Llame a connect () y espere a que se llame a onConnected ()".

Estoy tratando de usarGamesClient para utilizar las tablas de clasificación de los servicios de juego de Google Play. Ahora mismo lo tengo así cuando elimportbutton se hace clic, elGamesClient Se utiliza para enviar algunas puntuaciones. Como se ve abajo me sale un error diciendoconnect() and wait for onConnectd() to be called.

¿Qué estoy haciendo mal? Veo en algunos tutoriales algo llamadoPlusClient. ¿Necesito eso de alguna manera? Puedo proporcionar más código si es necesario.

Parece que hay muchas preguntas en StackOverflow sobre este nuevo servicio de juegos de Google Play, pero no hay muchas respuestas por ahí. Parece que la gente todavía está aprendiendo, como yo. :)

LogCat

06-12 00:40:40.173: E/AndroidRuntime(1685): java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called.
06-12 00:40:40.173: E/AndroidRuntime(1685):     at com.google.android.gms.internal.p.n(Unknown Source)
06-12 00:40:40.173: E/AndroidRuntime(1685):     at com.google.android.gms.internal.p.o(Unknown Source)
06-12 00:40:40.173: E/AndroidRuntime(1685):     at com.google.android.gms.internal.bj.a(Unknown Source)
06-12 00:40:40.173: E/AndroidRuntime(1685):     at com.google.android.gms.games.GamesClient.submitScore(Unknown Source)
06-12 00:40:40.173: E/AndroidRuntime(1685):     at matt.lyons.bibletrivia.lite.MainMenu$8.onClick(MainMenu.java:173)
06-12 00:40:40.173: E/AndroidRuntime(1685):     at android.view.View.performClick(View.java:4204)
06-12 00:40:40.173: E/AndroidRuntime(1685):     at android.view.View$PerformClick.run(View.java:17355)
06-12 00:40:40.173: E/AndroidRuntime(1685):     at android.os.Handler.handleCallback(Handler.java:725)
06-12 00:40:40.173: E/AndroidRuntime(1685):     at android.os.Handler.dispatchMessage(Handler.java:92)
06-12 00:40:40.173: E/AndroidRuntime(1685):     at android.os.Looper.loop(Looper.java:137)
06-12 00:40:40.173: E/AndroidRuntime(1685):     at android.app.ActivityThread.main(ActivityThread.java:5041)
06-12 00:40:40.173: E/AndroidRuntime(1685):     at java.lang.reflect.Method.invokeNative(Native Method)
06-12 00:40:40.173: E/AndroidRuntime(1685):     at java.lang.reflect.Method.invoke(Method.java:511)
06-12 00:40:40.173: E/AndroidRuntime(1685):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
06-12 00:40:40.173: E/AndroidRuntime(1685):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
06-12 00:40:40.173: E/AndroidRuntime(1685):     at dalvik.system.NativeStart.main(Native Method)

MainMenu.java

public class MainMenu extends BaseGameActivity {

    DatabaseHelper dh;
    GamesClient client;
    Context c;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainmenu);

        client = getGamesClient();
        client.connect();

        c = this;

        dh = new DatabaseHelper(this);
        dh.openDB();

        importbutton = (Button)findViewById(R.id.importbutton);

        importbutton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                importScores();
            }
        });
    }

    public void importScores() {

        final Dialog dialog = new Dialog(c);
        dialog.setContentView(R.layout.importlayout);
        dialog.setTitle(R.string.importtitle);

        TextView question = (TextView)dialog.findViewById(R.id.question);       
        Button save = (Button)dialog.findViewById(R.id.save);
        Button scratch = (Button)dialog.findViewById(R.id.scratch);

        question.setText(c.getResources().getString(R.string.importquestion));
        save.setText(c.getResources().getString(R.string.savebtn));
        scratch.setText(c.getResources().getString(R.string.scratchbtn));

        save.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

                long highestJC = dh.getHighestJC();
                client.submitScore(c.getResources().getString(R.string.leaderboardjc), highestJC);          

                long highestTenC = dh.getHighestTenC();
                client.submitScore(c.getResources().getString(R.string.leaderboardtenc), highestTenC);

                long highestExodus = dh.getHighestExodus();
                client.submitScore(c.getResources().getString(R.string.leaderboardexodus), highestExodus);

                long highestGenesis = dh.getHighestGenesis();
                client.submitScore(c.getResources().getString(R.string.leaderboardgenesis), highestGenesis);

                long highestHolydays = dh.getHighestHolydays();
                client.submitScore(c.getResources().getString(R.string.leaderboardholydays), highestHolydays);

                long highestFacts = dh.getHighestFacts();
                client.submitScore(c.getResources().getString(R.string.leaderboardfacts), highestFacts);

                long highestActs = dh.getHighestActs();
                client.submitScore(c.getResources().getString(R.string.leaderboardacts), highestActs);

                long highestRandom = dh.getHighestRandom();
                client.submitScore(c.getResources().getString(R.string.leaderboardrandom), highestRandom);

                long highestAll = dh.getHighestAll();
                client.submitScore(c.getResources().getString(R.string.leaderboardallcats), highestAll);

                dialog.dismiss();
            }
        });

        scratch.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                dh.deleteAll();
                for(int i = 0; i < 15; i++) {
                    dh.insert(0, 0, "-");
                }
                dialog.dismiss();
                dh.closeDB();
            }
        });

        dialog.show();
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta