آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

دقت پایین مکان یابی با اینترنت سیم کارت

Mostafa-ir  9 سال پیش  9 سال پیش
0 0

سلام دوستان وقت بخیر
همون طور که اطلاع دارید در برنامه نویسی اندروید به ۲ طریق می توان به محدوده جغرافیایی کاربر دسترسی داشت:
۱-از طریق ماهواره GPS_Provider
۲-از طریق شبکه اینترنت Network_provider

که انتخاب بنده به دلیل سرعت بیشتر دریافت اطلاعات، Network_provider بود. مشکل اصلی دقت اطلاعات دریافت شده است ، یعنی زمانی که تلفن همراه با wifi به اینترنت متصل میشود ، اطلاعات محدوده جغرافیایی تقریبا دقیق است و نرخ خطای پایینی دارد اما زمانی که تلفن همراه با اینترنت سیمکارت ، متصل می شود دقت اطلاعات به طور عجیبی پایین است و آدرس هایی بازگردانده شده بسیار دور تر از مکان اصلی است.(نرخ خطا در اپراتور های مختلف ، متفاوت است)
چندین کتابخانه را نیز امتحان کردم اما تاثیری یافت نشد.
آیا روشی برای بهبود آدرس یابی از طریق اینترنت سیمکارت وجود دارد؟

 public class Get_Location extends Service {
private LocationListener Listener;
private LocationManager locationManager;
Location location_pub;
String s;

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

@Override
public void onCreate() {
ctx = this;
startService();

Listener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {

//location.setAccuracy((float) 10.0);
String d=location.getExtras()+" "+location.getTime()+" "+location.getElapsedRealtimeNanos()+" "
+location.getAltitude()+" "+location.getBearing()+" "+location.getSpeed()+" "+location.getProvider();
Log.e("net_loc", location.getLatitude() + " " + location.getLongitude());
double myLat = 0;
double myLong = 0;
Log.d("getAccuracy()",d+"");
myLat = location.getLatitude();
myLong = location.getLongitude();
Geocoder gcd = new Geocoder(getBaseContext(), Locale.getDefault());
List<Address> addresses = null;

try {
addresses = gcd.getFromLocation(myLat, myLong, 1);
} catch (IOException e) {
e.printStackTrace();
}

try {
String address = addresses.get(0).getAddressLine(0); // If any
String city = addresses.get(0).getLocality();
String state = addresses.get(0).getAdminArea();
String country = addresses.get(0).getCountryName();
String postalCode = addresses.get(0).getSubLocality();
// getSubLocality();
String knownName = addresses.get(0).getFeatureName();

s = myLong + "\n" + myLat + "\n "+location.getAccuracy() +"\n "+ knownName + "\n --------------------------------";
Log.e("GPS", s + "");
} catch (Exception e) {
e.printStackTrace();
}

}

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

}

@Override
public void onProviderEnabled(String s) {

}

@Override
public void onProviderDisabled(String s) {
Intent i = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
}
};
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.


}
locationManager = (LocationManager) getApplicationContext().getSystemService(Context.LOCATION_SERVICE);

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 3000, 0, Listener);

}

@Override
public void onDestroy() {
super.onDestroy();
if (locationManager != null) {
locationManager.removeUpdates(Listener);
}
}
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
sh.khaksar  9 سال پیش
0 0

استفاده از LocationManager دیگه این روز ها توصیه نمیشه و به جاش کار با گوگل پلی سرویس و استفاده از API  ای هست که به ما داده. در واقع بهترین موقعیت ممکن رو براتون به دست میاره.

https://developer.android.com/training/location/index.html

در لینک بالا نحوه راه اندازی و استفاده ازش به طور کامل توضیح داده شده. (قند شکن میخواد).

مشکلی بود در خدمتم.

0 0
تشکر از شما اما با توجه به مستندات گوگل سعی کردم پروژه ای را آماده کنم اما در ابتدای آن به مشکل خورم . آدرس پروژه راهنمای گوگل لینک بود که ایمپورت نشد و کد های آن را کپی و در پروژه جدیدی قرار دادم اما خطای Update Google Play services در گوشی من ظاهر شد در صورتی که گوگل سرویس نصب شده آخرین نسخه است . لطفا در صورت امکان راهنمایی بفرمایید و یا لینک یک پروژه از پیش ساخته شده را ارسال نمایید. (9 سال پیش)
0 0
بهتره که ‌Play Services رو با خود PlayStore آپیدت کنید. اگر برنامه Google رو هم آپدیت کنید فکر کنم کافی باشه. حقیقتا پروژه از پیش ساخته شده که بتونم منتشرش کنم ندارم. ولی طبق همون مستندات برای پروژه های مختلف جواب گرفتم. (9 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .