Как получить местоположение с помощью GoogleApiClient?

Я пытаюсь получить местоположение в Android, используя GoogleApiClient lib.im, пытаясь использовать приведенный ниже код. Но ничего не присваивается clientLoc. есть ли ошибка в моем коде? Может кто-нибудь помочь мне?

Lat = (TextView) findViewById(R.id.textView2);
Lng = (TextView) findViewById(R.id.textView4);
getLoc = (Button) findViewById(R.id.button);
clientLoc=new GoogleApiClient.Builder(MainActivity.this)
.addConnectionCallbacks(this).addOnConnectionFailedListener(this)
.addApi(LocationServices.API).build();



getLoc.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        MobLoc = LocationServices.FusedLocationApi.getLastLocation(clientLoc);
        try {

        Lat.setText(String.valueOf(MobLoc.getLatitude()));
        Lng.setText(String.valueOf(MobLoc.getLongitude()));

        Toast.makeText(MainActivity.this, "", Toast.LENGTH_LONG).show();
        }
        catch (Exception e){
            Toast.makeText(MainActivity.this," "+e.getMessage(),Toast.LENGTH_LONG);

    }
});

person its_kd    schedule 15.12.2015    source источник


Ответы (1)


Похоже, вы не вызываете Connect на своем клиенте Google API. Вы не можете запросить местоположение у клиента без предварительного вызова connect. Вызовите соединение на своем клиенте API Google, а затем в обратном вызове onConnected установите прослушиватель кликов для вашей кнопки.

private void getGoogleApiClient() {
    if (mGoogleApiClient == null) {
        mGoogleApiClient = new GoogleApiClient.Builder(mActivity)
                .addApi(LocationServices.API)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();
    }
    mGoogleApiClient.connect();
}

@Override
public void onConnected(Bundle bundle) {
    getLoc.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            MobLoc = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
            try {

            Lat.setText(String.valueOf(MobLoc.getLatitude()));
            Lng.setText(String.valueOf(MobLoc.getLongitude()));

            Toast.makeText(MainActivity.this, "", Toast.LENGTH_LONG).show();
            }
            catch (Exception e){
            Toast.makeText(MainActivity.this," "+e.getMessage(),Toast.LENGTH_LONG);

        }
    });
}

Удачного кодирования

person doubleA    schedule 15.12.2015