Нет getApiClient() в игровых сервисах Google Play BaseGameUtils

Я только что добавил в свою игру таблицу лидеров сервисов Google Play, но есть некоторые проблемы. Я не могу начать активность в таблице лидеров. Вот мой код

startActivityForResult(Games.Leaderboards.getLeaderboardIntent(getApiClient(), "leaderboard_id"), 5000);

проблема в том, что нет никакого метода getApiClient(). Есть идеи?


person Henrik    schedule 15.02.2014    source источник


Ответы (3)


Вы должны использовать объект типа GoogleApiClient. Ваш код должен быть таким:

public class MainActivity extends Activity implements GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener{
        GoogleApiClient mGoogleClient;
        ...

        @Override
        protected void onCreate(final Bundle savedInstanceState) {
            ...
            //Google Game 
            mGoogleClient = new GoogleApiClient.Builder(this, this, this)
           .addApi(Games.API)
           .addScope(Games.SCOPE_GAMES)
           .setGravityForPopups(Gravity.TOP | Gravity.CENTER_HORIZONTAL)
           .build();

        }

        @Override
        public void onStart(){
            super.onStart();
            //Here is a good place to connect with Google Api
            mGoogleClient.connect();
        }

        @Override
        public void onConnected(Bundle connectionHint) {}

        @Override
        public void onConnectionSuspended(int cause) {}

        @Override
        public void onConnectionFailed(ConnectionResult connectionResult) {}

}
person avarana    schedule 15.02.2014

В документе по API игр указан этот метод в библиотеке BaseGameUtils в проекте Android Samples. а также аналогичные методы, такие как getApiClientBuilder():

«Если ваша игра хочет добавить дополнительные API-интерфейсы или области действия сервисов Google Play в GoogleApiClient, управляемый BaseGameActivity, она может сделать это, вызвав getApiClientBuilder() для объекта GameHelper» в BaseGameUtils.

Я пока не вижу этих методов в BaseGameUtils на github и предполагаю, что они будут обновлены в какой-то момент.

ОБНОВЛЕНИЕ: похоже, обновление GameHelper в BaseGameUtils на подходе< /а>.

person yodavid    schedule 15.02.2014

если ваша основная активность расширяет BaseGameActivity, например, открытый класс MainActivity расширяет BaseGameActivity

то вы можете использовать getApiClient() в любом месте этого действия.

однако, если вы хотите получить доступ к getApiClient() из другого действия (или класса без действия), сделайте следующее:

открытый класс MainActivity расширяет BaseGameActivity{

static GoogleApiClient myclient;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myclient=getApiClient();
} 

...}

тогда вам просто нужно вызвать «MainActivity.myclient» вместо «getApiClient()» из других классов.

person George Itty    schedule 14.07.2015