Ich habe auf Google in Bezug auf dieses Problem, aber nicht die Lösung bekommen.Ich versuche Longitude und Breitengrad der Gerätestandort zu bekommen. Benutzer wird das Bild von der Kamera klicken und zu diesem Zeitpunkt habe ich die Breite, Länge des Gerätes GPS erhalten verwenden und dass anzuzeigen. Aber ist nicht funktioniert.Nicht erhalten Breite und Länge in Android
Hier ist mein Code: -
public class MainActivity extends Activity {
EditText editAddress,editName;
ImageView ivPhoto;
Button btnTakePic,btnNext1;
Bitmap bitMap;
static int TAKE_PICTURE = 1;
protected LocationManager locationManager;
protected LocationListener locationListener;
protected Context context;
TextView txtLat;
String lat;
String provider;
protected double latitude,longitude;
protected boolean gps_enabled,network_enabled;
private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES = 1; // in Meters
private static final long MINIMUM_TIME_BETWEEN_UPDATES = 1000; // in Milliseconds
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editAddress = (EditText)findViewById(R.id.edtAddress);
editName = (EditText)findViewById(R.id.edtName);
ivPhoto = (ImageView)findViewById(R.id.ivPhoto);
btnTakePic = (Button)findViewById(R.id.btnTakePic);
btnNext1 = (Button)findViewById(R.id.btnNext1);
btnTakePic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,TAKE_PICTURE);
}
});
btnNext1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent nextIntent = new Intent(MainActivity.this,ContactPersonDetail.class);
startActivity(nextIntent);
}
});
}
private void GetLocationLatLong() {
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
// locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,MINIMUM_TIME_BETWEEN_UPDATES, MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, new MyLocationListener());
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if(location!=null){
String message = String.format("Current Location \\n Longitude: %1$s \\n Latitude: %2$s",location.getLongitude(), location.getLatitude());
Toast.makeText(MainActivity.this,message,Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == TAKE_PICTURE && resultCode== RESULT_OK && intent != null){
// get bundle
Bundle extras = intent.getExtras();
// get bitmap
bitMap = (Bitmap) extras.get("data");
ivPhoto.setImageBitmap(bitMap);
GetLocationLatLong();
}
}
private class MyLocationListener implements LocationListener{
@Override
public void onLocationChanged(Location location) {
String message = String.format("New Location \n Longitude: %1$s \n Latitude: %2$s", location.getLongitude(), location.getLatitude());
longitude = location.getLongitude();
latitude = location.getLatitude();
Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show();
Log.d("Longittuteeeeeeeeeeee",message);
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
Toast.makeText(MainActivity.this, "Provider status changed",Toast.LENGTH_LONG).show();
}
@Override
public void onProviderEnabled(String provider) {
Toast.makeText(MainActivity.this,"Provider enabled by the user. GPS turned on", Toast.LENGTH_LONG).show();
}
@Override
public void onProviderDisabled(String provider) {
Toast.makeText(MainActivity.this, "Provider disabled by the user. GPS turned off", Toast.LENGTH_LONG).show();
}
}
}
Dies sind die in manifest verwendet Berechtigungen: -
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" />
<uses-permission android:name="android.permission.INTERNET"/>
In dieser Erlaubnis, zwei Berechtigungen (ACCESS_MOCK_LOCATION, CONTROL_LOCATION_UPDATES) geben Fehler.
Fehler in Erlaubnis: -
verwendet Zulassungs android: name = "android.permission.ACCESS_MOCK_LOCATION"
Mock Standorte sollten nur in einem Test- oder Debug-spezifischen manifest angefordert werden Datei (in der Regel src/debug/AndroidManifest.xml) weniger ... (Strg + F1) Die Verwendung eines Schein-Location-Providers (durch die Erlaubnis android.permission.ACCESS_MOCK_LOCATION) sollte nur in Debug Builds (oder aus Tests) erfolgen) . In Gradle Projekten bedeutet, dass Sie diese Berechtigung nur Anforderung in einer Test- oder Debug-Quelle spezifische Manifest-Datei festgelegt. Um dies zu beheben, erstellen Sie eine neue Manifestdatei im Debug-Ordner und verschieben Sie das Element dorthin. Ein typischer Pfad zur Debug-Manifest-Überschreibungsdatei in einem Gradle-Projekt lautet src/debug/AndroidManifest.xml.
Bitte lassen Sie mich wissen, was ich hier falsch mache.
Code, den Sie verwenden ist lat lang für immer, wenn es eine Änderung in der Lage ist, aber ich glaube nicht, dass Sie brauchen .Sie können Breite und Länge einfach erhalten, indem Sie diesem Link folgen http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/. Sie brauchen nur Code im Zusammenhang mit getLatitude und getLonglitude Methode –