2016-06-26 19 views
1

私は現在の場所を取得するためにgoogle places APIを使用しようとしていますが、何も表示されていません。電話でこれを実行しています。このコードに関しては、forループexecuted.Iがここgoogle places APIを使用して現在地を取得する

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

のように、マニフェストファイル内のすべての必要な許可を与えているということは私のコードでされていない

package com.example.shivam.locateplace; 

import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener; 
import com.google.android.gms.common.api.PendingResult; 
import com.google.android.gms.common.api.ResultCallback; 
import com.google.android.gms.location.LocationServices; 
import com.google.android.gms.location.places.PlaceLikelihood; 
import com.google.android.gms.location.places.PlaceLikelihoodBuffer; 
import com.google.android.gms.location.places.Places; 

import android.Manifest; 
import android.content.Context; 
import android.content.pm.PackageManager; 
import android.location.Location; 
import android.net.ConnectivityManager; 
import android.os.Bundle; 
import android.support.annotation.NonNull; 
import android.support.annotation.Nullable; 
import android.support.v4.app.ActivityCompat; 
import android.support.v4.app.FragmentActivity; 
import android.text.TextUtils; 
import android.util.Log; 
import android.widget.Toast; 

public class MainActivity extends FragmentActivity 
     implements OnConnectionFailedListener, GoogleApiClient.ConnectionCallbacks { 
    private GoogleApiClient mGoogleApiClient; 
    private static final String TAG = MainActivity.class.getSimpleName(); 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mGoogleApiClient = new GoogleApiClient 
       .Builder(this) 
       .addApi(Places.GEO_DATA_API) 
       .addApi(Places.PLACE_DETECTION_API) 
       .addApi(LocationServices.API) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .enableAutoManage(this, this) 
       .build(); 


     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      Toast.makeText(getApplicationContext(), "permission not given", Toast.LENGTH_SHORT) 
        .show(); 
      return; 
     } 
     boolean q1 = isOnline(); 
     if (!q1) { 
      Toast.makeText(getApplicationContext(), "internet permission not given", Toast.LENGTH_SHORT) 
        .show(); 
      return; 
     } 



    } 

    @Override 
    public void onConnected(@Nullable Bundle bundle) { 
     if (mGoogleApiClient != null) { 
      mGoogleApiClient.connect(); 
     } 
     Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_SHORT) 
       .show(); 
     if (mGoogleApiClient.isConnected()) { 
      Toast.makeText(getApplicationContext(), "mGoogleApiClient is connected", Toast.LENGTH_SHORT) 
        .show(); 
     } else { 
      Toast.makeText(getApplicationContext(), "mGoogleApiClient is not connected", Toast.LENGTH_SHORT) 
        .show(); 
     } 

     getpos(); 
     getresul(); 
    } 

    void getpos(){ 
     String Loca; 
     Location mLastLocation; 
     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      return; 
     } 
     mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
       mGoogleApiClient); 
     if (mLastLocation != null) { 
      double mLatitudeText = mLastLocation.getLatitude(); 
      double mLongitudeText=mLastLocation.getLongitude(); 
      Loca = Double.toString(mLatitudeText) + " " + Double.toString(mLongitudeText); 
      Toast.makeText(getApplicationContext(), Loca, Toast.LENGTH_LONG) 
        .show(); 
     }else{ 
      Toast.makeText(getApplicationContext(), "No location to show", Toast.LENGTH_LONG) 
        .show(); 
     } 
    } 

    void getresul() { 
     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 

      return; 
     } 
     PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi 
       .getCurrentPlace(mGoogleApiClient, null); 
     result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() { 
      @Override 
      public void onResult(PlaceLikelihoodBuffer likelyPlaces) { 
       Toast.makeText(getApplicationContext(),"inside onresult" , Toast.LENGTH_SHORT) 
         .show(); 

       for (PlaceLikelihood placeLikelihood : likelyPlaces) { 
        Toast.makeText(getApplicationContext(),"inside for loop", Toast.LENGTH_SHORT) 
          .show(); 
        String q= String.valueOf(placeLikelihood.getPlace().getName()); 
        Toast.makeText(getApplicationContext(),q , Toast.LENGTH_SHORT) 
          .show(); 

        /* Log.i(TAG, String.format("Place '%s' has likelihood: %g", 
          placeLikelihood.getPlace().getName(), 
          placeLikelihood.getLikelihood()));*/ 
       } 
       Toast.makeText(getApplicationContext(),"after for loop" , Toast.LENGTH_SHORT) 
         .show(); 


       likelyPlaces.release(); 
      } 
     }); 
    } 

    public boolean isOnline() { 
     ConnectivityManager cm = 
       (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 

     return cm.getActiveNetworkInfo() != null && 
       cm.getActiveNetworkInfo().isConnectedOrConnecting(); 
    } 

    @Override 
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 
     Toast.makeText(getApplicationContext(), "Connection failed", Toast.LENGTH_SHORT) 
       .show(); 
    } 


    @Override 
    public void onConnectionSuspended(int i) { 
     Toast.makeText(getApplicationContext(), "Connection suspended", Toast.LENGTH_SHORT) 
       .show(); 
    } 
} 
+0

このアクティビティの実行時にスレッドを編集してログメッセージを投稿できますか? –

答えて

0

あなたはmGoogleApiClientが時に接続されてください。このコードを実行していますか?そうは思わない。 onConnected()メソッドでPendingResult関数を使用してみませんか?この呼び出しは非同期なので、このコードを実行するときにはまったく接続されていない可能性があります。 onConnected()のトーストは表示されていますか?

+0

onConnectedのトーストが表示されます – shivam12393

+0

結果コールバックを設定した後、またはその前に発生しますか? – Gil

+0

最初のトーストは「接続」され、2番目のトーストは「内側の結果」です。この後、何も白い画面に表示されない – shivam12393

関連する問題