0

私はGoogleの場所apisから始めています、私はこれまで行ってきたことですが、デバイスの現在の位置を取得しようとしていますが、どのようにいつOnResultのコードが呼び出されるのかわかりません、その内部のログはlogcatで印刷されていないので:アプリケーションでOnResultが呼び出されるのはいつですか? (ResultCallback)

Log.d("2^^check1111","nside : beforee"); 

    try { 
     if (ActivityCompat.checkSelfPermission(getActivity().getApplicationContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      // TODO: Consider calling 
      // ActivityCompat#requestPermissions 
      // here to request the missing permissions, and then overriding 
      // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
      //           int[] grantResults) 
      // to handle the case where the user grants the permission. See the documentation 
      // for ActivityCompat#requestPermissions for more details. 
      Log.d("2here now","yoyo0"); 
      ActivityCompat.requestPermissions(getActivity(), new String[] {Manifest.permission.ACCESS_FINE_LOCATION}, 123); 
     } 

     Log.d("999here now","yoyo0"); 

     PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi.getCurrentPlace(mGoogleApiClient, null); 

     Log.d("888here now","after result"); 

     result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() { 

      @Override 
      public void onResult(@NonNull PlaceLikelihoodBuffer likelyPlaces) { 
      // utils.showLog(TAG, "" + likelyPlaces.getCount()); 

       /// Toast.makeText(getActivity().getApplicationContext(),"inside : onResult",Toast.LENGTH_LONG).show(); 
       Log.d("2^^check","nside : onResul"); 
       if (likelyPlaces.getCount() > 0) { 


       // Toast.makeText(getActivity().getApplicationContext(),"inside :likely >0",Toast.LENGTH_LONG).show(); 
        Log.d("2^^check2","nside :likely >0"); 
        PlaceLikelihood placeLikelihood = likelyPlaces.get(0); 
        //    String content = ""; 
        if (placeLikelihood != null && placeLikelihood.getPlace() != null && !TextUtils.isEmpty(placeLikelihood.getPlace().getName())) { 

         Log.d("2^^check3","nside : placelikelihood not nu"); 
        // Toast.makeText(getActivity().getApplicationContext(),"inside : placelikelihood not null",Toast.LENGTH_LONG).show(); 
    LatLng FromLatLng = placeLikelihood.getPlace().getLatLng(); 
         Log.d("2^^check4","4444"+FromLatLng); 
        // Toast.makeText(getActivity().getApplicationContext(),"inside : latlng :"+FromLatLng,Toast.LENGTH_LONG).show(); 
         newLatLng = FromLatLng; 
         FromLat = FromLatLng.latitude; 
         FromLng = FromLatLng.longitude; 
        } 
       } else { 

     Toast.makeText(getActivity(), "Auto Location can't fetch", Toast.LENGTH_SHORT).show(); 
       } 
       likelyPlaces.release(); 
      } 
     }); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

あなたのコードはtry-catchブロック内にあります。キャッチ内にいくつかのログやブレークポイントを入れて、あなたのコードがいくつかの例外をスローしているかどうかを確認してください。 – androidevil

+0

ログにcatchブロックを追加してみましたが、そこに例外がキャッチされていません – user3820753

答えて

1

APIキーに登録する必要があります。そうしないと結果が表示されません。

ここに登録する:あなたのAndroidManifest.xmlhttps://developers.google.com/places/android-api/signup

そしては、次のとおりです。

<application> 
    ... 
    <meta-data 
     android:name="com.google.android.geo.API_KEY" 
     android:value="YOUR_API_KEY"/> 
</application> 

編集: をだから私は、新しいプロジェクトにコードを追加してonResult()が実行されないことがわかりました。しかし、いくつかの変更の後、私はそれを働かせることができました。

まず、私はその後、私はそうのようなGoogleApiClient.Builder()を使うFragmentActivity

私の活動をした:

final GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(this) 
    .addApi(Places.PLACE_DETECTION_API) 
    .addApi(Places.GEO_DATA_API) 
    .enableAutoManage(this, this) 
    .build(); 

これを実行した後、私はonResult()が実行取得今でご覧ください。

+0

お時間をありがとう、ありがとうございます.GoogleApiClient、つまり.enableAutoManage(これ、これ)を接続するためのコードを追加したことがないという問題が見つかりました。 – user3820753

0

あなたAndroidManifest.xmlに設定ACCESS_FINE_LOCATION許可が必要です。これが設定されていない場合、位置データは利用できず、結果は決して掲示されません。

+0

しかし、私はすでにこのパーミッションをマニフェストに追加しました。また、metaデータのgeo.apiキーも追加しました。 – user3820753

関連する問題