There is a code for android that locates using google-play-services. The code works and the location is displayed at a specified interval, but only when gps is turned on, when your internet location is turned on. How can I fix this?

MainActivity:

import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks; import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener; import com.google.android.gms.location.LocationListener; import com.google.android.gms.location.LocationRequest; import com.google.android.gms.location.LocationServices; import android.app.Activity; import android.location.Location; import android.os.Bundle; import android.util.Log; import android.view.View; public class MainActivity extends Activity implements ConnectionCallbacks, OnConnectionFailedListener, LocationListener { GoogleApiClient googleApiClient; LocationRequest locationRequest; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); buildGoogleApiClient(); } public void onStart(View v) { googleApiClient.connect(); } public void onStop(View v) { googleApiClient.disconnect(); } public synchronized void buildGoogleApiClient() { googleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API).build(); } @Override public void onConnected(Bundle arg0) { Log.d("myLogs", "onConnected"); locationRequest = LocationRequest.create(); locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); locationRequest.setInterval(1000); // Update location every second LocationServices.FusedLocationApi.requestLocationUpdates( googleApiClient, locationRequest, this); } @Override public void onConnectionFailed(ConnectionResult arg0) { Log.d("myLogs", "onConnectionFailed"); } @Override public void onConnectionSuspended(int arg0) { Log.d("myLogs", "onConnectionSuspended"); } @Override public void onLocationChanged(Location arg0) { // LocationListener Log.d("myLogs", "Location.lat = " + arg0.getLatitude() + ", long = " + arg0.getLongitude()); } 

}

AndroidManifest:

 <?xml version="1.0" encoding="utf-8"?> 

 <uses-permission android:name="android.permission.INTERNET" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" > </uses-permission> <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="20" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" > </meta-data> <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> 

    1 answer 1

    Not enough permissions to determine the approximate location. Add to manifest:

     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
    • I tried, nothing has changed. - Log