الروبوت LocationManager.getLastKnownLocation () يعود لاغية

StackOverflow https://stackoverflow.com/questions/1608632

  •  05-07-2019
  •  | 
  •  

سؤال

وهكذا أحاول أخذ عينات من الإحداثيات مرة واحدة فقط في تطبيق. أنا لا أريد لإنشاء كائن LocationListener للحصول على التحديثات باستمرار GPS. أريد أن انتظر حتى تتلقى الإحداثيات، ومن ثم المضي قدما إلى مهمة أخرى.

وهنا مقتطف شفرة

LocationManager lm = (LocationManager)act.getSystemService(Context.LOCATION_SERVICE);
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
String provider = lm.getBestProvider(crit, true);
Location loc = lm.getLastKnownLocation(provider);

والمتغير في الموضع دائما فارغة في المضاهاة. حاولت استخدام الأمر "الإصلاح الجغرافي خطوط الطول والعرض" لتعيينها، وأيضا حاولت استخدام طريقة DDMS من تحديد ذلك. كان لا طريقة أي تأثير على التعليمات البرمجية. أيضا المقتطف لا يسبب أي استثناءات.

وشكرا لمساعدتكم.

هل كانت مفيدة؟

المحلول

والدعوة إلى تحديث طلب لموقع لا تسد، وبالتالي فإنه لن انتظر هناك. أيضا قد لا يكون تم بدء تشغيل مزود في المضاهاة.

وشيك محتمل يمكن أن يكون لمعرفة ما إذا كانت الإعدادات في ذلك تعطيل مزود نظام تحديد المواقع؟ ثم ترسل الإصلاح الجغرافي.

ومع ذلك، أود أن استخدام الموقع المستمع، سيكون من المثالي في قضيتك منذ كنت في حاجة الى الإصلاح الجغرافية للشروع هو المستخدمة further.Location المستمع لتلقي الإخطارات من LocationManager عندما تغيرت الموقع. يمكنك إلغاء تسجيل المستمع بعد geofix أولا.

ملحوظة: يمكن أن يستغرق بعض الوقت على الجهاز للحصول على الموقع الحالي، وحتى على هذا الجهاز يمكن أن يعود لاغية

نصائح أخرى

وحاول استخدام في MyLocationOverlay أو إنشاء runnable أن يفعل ما عليك القيام به مع هذا الموقع GPS، وتمريرها إلى

boolean     runOnFirstFix(java.lang.Runnable runnable)
          Queues a runnable to be executed as soon as we have a location fix.

ومن ثم تعطيل التحديثات موقع للMyLocationOverlay.

وتحرير: والسبب موقع باطل لأن في ذلك الوقت يتم تشغيل هذا الرمز، لم يرد أي geofix

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top