2016-07-06 13 views
3

以下は現在の場所でneabyの場所を取得するためのコードです。なぜそれがこのように起こるのか?私はAPIキーが有効でチェックして、ステータスコード「ERROR」はhttps://developers.google.com/android/reference/com/google/android/gms/common/api/CommonStatusCodes.html#constants には、より詳細な情報と失敗した操作は、以下の活動であるあなた をありがとう言う:GoogleプレイスApiはStatus {statusCode = ERROR、resolution = null}を返します

public class PlacesAPIActivity extends AppCompatActivity implements 
     OnConnectionFailedListener, GoogleApiClient.ConnectionCallbacks { 
    private static final String LOG_TAG = "PPPPPPPPPPPPPPPPP"; 
    private static final int GOOGLE_API_CLIENT_ID =0; 
    private GoogleApiClient mGoogleApiClient; 
    private static final int PERMISSION_REQUEST_CODE = 100; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_places_api); 
     Log.d("resuktfvvvfdfd", "onCreate: "); 
     buildGoogleApiClient();} 

    private synchronized void buildGoogleApiClient() 
    { Button currentButton = (Button) findViewById(R.id.currentButton); 
     mGoogleApiClient = new GoogleApiClient.Builder(PlacesAPIActivity.this) 
       .addApi(Places.PLACE_DETECTION_API) 
       .addApi(Places.GEO_DATA_API) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .enableAutoManage(this, GOOGLE_API_CLIENT_ID, this) 
       .build(); 
     mGoogleApiClient.connect(); 
     Log.d("connected", String.valueOf(mGoogleApiClient.isConnected())); 
     currentButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (mGoogleApiClient.isConnected()) { 
        Log.d("connected1", String.valueOf(mGoogleApiClient.isConnected())); 
        if (ContextCompat.checkSelfPermission(PlacesAPIActivity.this, 
          Manifest.permission.ACCESS_FINE_LOCATION) 
          != PackageManager.PERMISSION_GRANTED) { 
         ActivityCompat.requestPermissions(PlacesAPIActivity.this, 
           new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 
           PERMISSION_REQUEST_CODE); 
        } else { 
         callPlaceDetectionApi(); 
        } 

       } 
      } 
     }); 
    } 



    @Override 
    public void onConnectionFailed(ConnectionResult connectionResult) { 
     Log.e(LOG_TAG, "Google Places API connection failed with error code: " 
       + connectionResult.getErrorCode()); 

     Toast.makeText(this, 
       "Google Places API connection failed with error code:" + 
         connectionResult.getErrorCode(), 
       Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, 
              String permissions[], int[] grantResults) { 
     switch (requestCode) { 
      case PERMISSION_REQUEST_CODE: 
       if (grantResults.length > 0 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        callPlaceDetectionApi(); 
       } 
       break; 
     } 
    } 

    private void callPlaceDetectionApi() throws SecurityException { 

     Log.d("mvkvkmvkmvkm", "callPlaceDetectionApi: "); 
     PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi 
       .getCurrentPlace(mGoogleApiClient, null); 
     Log.d("result", result.toString()); 
     result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() { 
      @Override 
      public void onResult(PlaceLikelihoodBuffer likelyPlaces) { 
       System.out.println("inside callback..."); 
       Status status = likelyPlaces.getStatus(); 
       System.out.println("Status.tostring"+status.toString()); 
       System.out.println(status.isSuccess()); 
       System.out.println(status.getStatusCode()); 
       System.out.println(status.getStatusMessage()); 
       System.out.println(status.getStatus()); 
       for (PlaceLikelihood placeLikelihood : likelyPlaces) { 
        Log.i(LOG_TAG, String.format("Place '%s' with " + 
            "likelihood: %g", 
          placeLikelihood.getPlace().getName(), 
          placeLikelihood.getLikelihood())); 
       } 
       likelyPlaces.release(); 
      } 
     }); 
    } 




    @Override 
    public void onStop() { 
     super.onStop(); 


     mGoogleApiClient.disconnect(); 
    } 

    @Override 
    public void onConnected(@Nullable Bundle bundle) { 

    } 

    @Override 
    public void onConnectionSuspended(int i) { 

    } 
} 

Androidのマニフェストファイルは

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.******"> 
    <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_FINE_LOCATION"/> 
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".PlacesAPIActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

     <meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version"/> 

     <meta-data 
     android:name="com.google.android.geo.API_KEY" 
     android:value="A***************************o"/> 
    </application> 
</manifest> 

ログ画面

07-06 15:56:32.499 10925-10925/com.example.utkarsh.nearby D/connected1: true 
07-06 15:56:32.500 10925-10925/com.example.utkarsh.nearby D/mvkvkmvkmvkm: callPlaceDetectionApi: 
07-06 15:56:32.554 10925-10925/com.example.utkarsh.nearby D/result: [email protected] 
07-06 15:56:42.610 10925-10925/com.example.utkarsh.nearby I/System.out: inside callback... 
07-06 15:56:42.610 10925-10925/com.example.utkarsh.nearby I/System.out: Status.tostringStatus{statusCode=ERROR, resolution=null} 
07-06 15:56:42.610 10925-10925/com.example.utkarsh.nearby I/System.out: false 
07-06 15:56:42.610 10925-10925/com.example.utkarsh.nearby I/System.out: 13 
07-06 15:56:42.611 10925-10925/com.example.utkarsh.nearby I/System.out: ERROR 
07-06 15:56:42.611 10925-10925/com.example.utkarsh.nearby I/System.out: Status{statusCode=ERROR, resolution=null} 
+2

は、あなたがこの問題を解決できましたか? –

+0

同じ問題がある場合は、解決策を見つけましたか? – mehmetsen80

答えて

1

このエラーコードが大量に発生した後、自分のGPS位置をエミュレータに送信して解決しました。 AndroidスタジオAVD - Androidエミュレータでプログラムを実行しているときに、[More]> [Location]>クリックして緯度と経度を設定し、[Send]をクリックします。 すぐ次のgetCurrentLocation()要求が正常に実行されました。 アプリを実行する前に、あなたの位置をエミュレータに送信できます。それも同様に動作します。

0

私の場合は、Android向けGoogleプレイスは、Googleマップを初期化せずに正常に動作していません。この例で説明したようにhttps://developers.google.com/places/android-api/current-places-tutorial

/** 
* Builds the map when the Google Play services client is successfully connected. 
*/ 
@Override 
public void onConnected(Bundle connectionHint) { 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
} 
関連する問題