2017-07-16 5 views
-1

Ich habe versucht, den Standort über GPS durch den folgenden Code zu erhalten. Ich erhalte die Updates, wenn ich den Provider zu NETWORK_PROVIDER ändere, aber ich empfange keine Daten oder Position, wenn ich GPS_PROVIDER verwende. Ich habe bezeichnen die folgenden Tutorials- http://www.viralandroid.com/2015/12/how-to-get-current-gps-location-programmatically-in-android.html und https://www.youtube.com/watch?v=QNb_3QKSmMkZugriff auf den Standort über GPS in Android

package app.com.example.android.locationapp; 
import android.Manifest; 
import android.content.Intent; 
import android.content.pm.PackageManager; 
import android.location.Location; 
import android.location.LocationListener; 
import android.location.LocationManager; 
import android.provider.Settings; 
import android.support.v4.app.ActivityCompat; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity implements LocationListener { 
    TextView lat, longi; 
    LocationManager locationManager; 

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


    lat = (TextView) findViewById(R.id.textView2); 
    longi = (TextView) findViewById(R.id.textView4); 
    locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 


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

     Toast.makeText(this, "Please enable location permission", Toast.LENGTH_SHORT).show(); 
     return; 
    } else { 
     locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this); 
     Log.i("MainActivity", "reqLocationUpdates() method called"); 

    } 
} 

@Override 
public void onLocationChanged(Location location) { 
    Log.i("MainActivity","onLocation executed"); 
    lat.setText(location.getLatitude() + ""); 
    longi.setText(location.getLongitude() + ""); 
} 

@Override 
public void onStatusChanged(String s, int i, Bundle bundle) { 
} 

@Override 
public void onProviderEnabled(String s) { 

} 

@Override 
public void onProviderDisabled(String s) { 
    Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
    startActivity(intent); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_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. 
     return; 
    } 
    locationManager.removeUpdates(this); 
} 

}

+0

Ich empfehle die Verwendung von FusedLocationProviderApi. Es ist genauer und löst viele Dinge für Sie. https://developers.google.com/android/reference/com/google/android/gms/location/FusedLocationProviderApi –

+0

Okay, ich werde das auch überprüfen, aber können Sie mir helfen, das Problem in diesem Code zu finden .. –

Antwort

0

Stellen Sie sicher, genauen Standortberechtigungssatz haben. Und stellen Sie sicher, dass Sie Laufzeitberechtigungen überprüfen. Aber wahrscheinlich ist Ihr Problem LOS zu Satelliten. Wenn Sie im Innenbereich testen, können Sie das Satellitensignal wahrscheinlich nicht empfangen. Ohne das können Sie Ihren Standort nicht herausfinden und er wird Sie nie anrufen. Geh nach draußen, um zu testen, ob es funktioniert.

+0

Ja ich Habe schon die Erlaubnis für den guten Standort genommen. Und als ich getestet habe, waren andere Anwendungen in der Lage, den richtigen Ort zu holen, also gibt es ein anderes Problem. –

Verwandte Themen