私は現在の場所を取得するために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();
}
}
このアクティビティの実行時にスレッドを編集してログメッセージを投稿できますか? –