PDA

View Full Version : مشکل در کلاس LocationListener



saeedhushmand
سه شنبه 21 مرداد 1393, 10:51 صبح
سلام به همه ، من از کد زیر برای دریافت طول و عرض جغرافیایی استفاده کردم ولی طول و عرضی که بهم میده با اون جایی که هستم اختلاف داره مثلا حدود 100 متر اونور تر میده لطفا راهنمایی کنید ممنون


package com.Masfa.Tracker;
import android.app.AlertDialog;
import android.app.Service;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.provider.Settings;
import android.util.Log;
public class GPSTracker extends Service implements LocationListener {

private final Context mContext;

// flag for GPS status
boolean isGPSEnabled = false;

// flag for network status
boolean isNetworkEnabled = false;

boolean canGetLocation = false;

Location location; // location
double latitude; // latitude
double longitude; // longitude


// Declaring a Location Manager
protected LocationManager locationManager;

public GPSTracker(Context context) {
this.mContext = context;
getLocation();
}

public Location getLocation() {
try {
locationManager = (LocationManager) mContext
.getSystemService(LOCATION_SERVICE);

// getting GPS status
isGPSEnabled = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);

// getting network status
isNetworkEnabled = locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDE R);

if (!isGPSEnabled && !isNetworkEnabled) {
// no network provider is enabled
} else {
this.canGetLocation = true;
// First get location from Network Provider
if (isNetworkEnabled) {
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
0,
0, this);
Log.d("Network", "Network");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROV IDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
// if GPS Enabled get lat/long using GPS Services
if (isGPSEnabled) {
if (location == null) {
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
0,
0, this);
Log.d("GPS Enabled", "GPS Enabled");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER );
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
}
}

} catch (Exception e) {
e.printStackTrace();
}

return location;
}
@Override
public void onLocationChanged(Location location) {
}

@Override
public void onProviderDisabled(String provider) {
}

@Override
public void onProviderEnabled(String provider) {
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}

@Override
public IBinder onBind(Intent arg0) {
return null;
}


public double getLatitude(){
if(location != null){
latitude = location.getLatitude();
}

// return latitude
return latitude;
}

/**
* Function to get longitude
* */
public double getLongitude(){
if(location != null){
longitude = location.getLongitude();
}

// return longitude
return longitude;
}

public boolean canGetLocation() {
return this.canGetLocation;
}
}

parvizwpf
سه شنبه 21 مرداد 1393, 11:01 صبح
تو مانیفست اگر از :

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

استفاده کرده باشید قطعا باید دیتای صحیح بیاد وگرنه بقیش به اشتباهات ماژول GPS که در دستگاهتون هست مربوط میشه

saeedhushmand
سه شنبه 21 مرداد 1393, 11:37 صبح
<uses-permission android:name="android.permission.ACCESS_COARSE_LOC ATION" />

از این استفاده نکرده بودم ولی الانم که استفاده کردم درست نشد متاسفانه

saeedhushmand
سه شنبه 21 مرداد 1393, 14:39 عصر
دوستان کمکم کنید...

saeedhushmand
چهارشنبه 22 مرداد 1393, 12:50 عصر
من بررسی کردم نهایت تا 5 متر خطا داره ولی الان برا من 100 متر خطا داره و خیلی استباه میشه شاید مثلا تو خیابون بقلی نقطه بده!
توی xprea z و htc one هم امتحان کردم و تو دوتاش خطا داره

abbasalim
چهارشنبه 22 مرداد 1393, 13:31 عصر
سلام
احتمال داره اینترنتتون وصل باشه و اندروید بجای استفاده از gps از اینترنت برای موقعیت گیری استفاده کنه در اینصورت سریع تر و با مصرف کمتری موقعیت پیدا میشه ولی دقت هم کمتره

saeedhushmand
چهارشنبه 22 مرداد 1393, 13:43 عصر
دوست عزیز نه اینترنت ندارم ، تو رو خدا کمک کن چند روز روش گیر کردم هیچ کاریم نتونستم بکنم

m11111
سه شنبه 08 مهر 1393, 01:02 صبح
سلام
من یه سوال دارم اگه کسی لطف کنه بگه
در کد زیر 2 تا 0 وجود داره که اولی minTime
و دومی minDistance
این 2 مقدار بهتره روی چند تنظیم بشن؟بهترین عدد چنده؟
<span class="highlight">locationManager</span>.requestLocationUpdates(
<span class="highlight">LocationManager</span>.NETWORK_PROVIDER,
0,
0, this);