Flutter-geolocator: Android Pie (API 28) Geolocator (). getCurrentPosition () لا يعود

تم إنشاؤها على ٢ نوفمبر ٢٠١٨  ·  39تعليقات  ·  مصدر: Baseflow/flutter-geolocator

🐛 تقرير الشوائب

عندما أقوم بتشغيل Geolocator (). getCurrentPosition () على Android Emulator مع Android Pie (API 28) ، لا تعود المكالمة على الإطلاق.

أقوم بتشغيل نفس الكود على موقع API 27 بإرجاع غرامة. حاولت إنشاء محاكي جديد ، لم يتغير شيء.

إعدادات

محاكي Android مع Android Pie (API 28)

الإصدار: 2.1.0

برنامج:

  • []: iphone: iOS
  • [X]: الروبوت: أندرويد
android

التعليق الأكثر فائدة

لدي نفس المشكلة وقمت بتعيين مهلة للعمل. عندما حدثت المهلة ، اتصلت بـ getLastKnownPosition ()

Geolocator().getCurrentPosition().timeout(Duration(seconds: 10)).then((position) {
      //getting position without problems
      print(position);
    }).catchError((error) {
      if (error is TimeoutException) {
        Geolocator().getLastKnownPosition().then((position) {
          //getting last known position
          print(position);
        }).catchError((error) {
          //handle the exception
        });
      } else {
        //handle the exception
      }
    });

يمكنك أيضًا أن تفعل الشيء نفسه مع الدفق

ال 39 كومينتر

انا ايضا ، ما الخطب؟ :(

كذلك هنا!

savjolovs إذا قمت

نفس السلوك هنا حتى دفع بعض الإحداثيات باستخدام ضوابط ممتدة.
نفس السلوك مع أحد جهازي phisycal. أولاً مع android 5 - يعمل بشكل جيد ، وآخر بـ 6 - لا يوجد استجابة حتى يتم تشغيل موقع fakegps.

+1 هنا

أي شخص فكرة ما السبب؟ هذه الميزة تحطم كل شيء ، هل جرب أحد مكونًا إضافيًا آخر؟

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

يبدو أن ibrierley لا يمكنه الحصول على إشارة GPS مع أو بدون تحريك ، ولكن في نفس الوقت لا تواجه التطبيقات المختلفة مثل خرائط Google مشاكل في تحديد الموقع الحالي. يسترجع lastKnownPosition الموقع لحوالي بضع مئات من الأمتار. مع android 5 ، لا توجد مشكلات على الإطلاق ، حتى إذا لم يُطلب منك إذن الموقع (ولكن لست متأكدًا ، فقد فاتني هذا عند التصحيح)

نفس المشكلات على Android oreo باستثناء إغلاق التطبيق وفتحه مرة أخرى

لقد كنت أعاني من استخدام ساعة Android Wear وكان لدي الكثير من المشاكل مع نظام تحديد المواقع العالمي (GPS) ، ولكن يبدو أنني أجعلها تعمل في الغالب (يمكن أن تنتهي المهلة بعد وقت طويل ، لكنني أعتقد أن هذه مشكلة مختلفة).

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

0) تأكد من أن جهازك يمكنه الحصول على إشارة GPS ، لذا قم بالخارج أو قم بتغذية المواقع عبر المحاكي (أقوم بتغذية مسار GPX الذي قمت بتنزيله للاختبار).

1) تأكد من تشغيل الشاشة. قد يتوقف GPS عن إرجاع النتائج إذا كان في وضع الحد الأدنى مهما كان يطلق عليه. أقوم بتشغيل الشاشة عند الحاجة باستخدام حزمة الشاشة و Screen.keepOn (صواب) ؛ إذا كانت الشاشة متوقفة عن التشغيل ، فيبدو أنها تحتفظ بمجموعة من المواقع وتخزنها مؤقتًا حتى يتم إعادة تشغيل الشاشة.

2) هذه هي أذوناتي في AndroidManifest.xml ، ربما تستحق المحاولة

""




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

3) كان لدي شذوذ مع انتهاء مهلة البث ، لذلك انتهى بي الأمر ببدء البث باستخدام geolocator.getPositionStream ولكن لم أستخدمه في الواقع. أثناء تشغيل البث ، أتصل بـ getCurrentPosition (WantAccuracy: LocationAccuracy.high) بناءً على مؤقت. أعتقد أن هذا ليس ضروريًا الآن ، حيث أعتقد أن مشكلتي الأصلية كانت إيقاف تشغيل الشاشة ، ولكن قد يكون الأمر يستحق المحاولة فقط بدافع الاهتمام.

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

شكرًا ibrierley على معلوماتك ، سأحاول في أقرب وقت ممكن

أجرى بعض البحث اليوم باستخدام أدوات إضافية مثل اختبار GPS على الأجهزة المادية.
لذلك لا توجد استجابة عندما لا يتوفر sat بواسطة اختبار GPS (0 متصل 1 متاح بسبب السحب والمباني الكبيرة حوله) حتى خرائط Google أو خدمات الخرائط الأخرى تعمل.
لا توجد استجابة عندما يكون القمر متصلاً بالإنترنت ولكن المسافة المحددة في خيارات الموقع ، ولكن ليس 100٪ في هذه الحالة - تحتاج إلى نوع من الانجراف عبر نظام تحديد المواقع العالمي (GPS) للحصول على إحداثيات أولية.
لقد قمت ببعض الحيل مع Lastknownlocation لوضعها هناك لبدء التطبيق الذي يتطلب الموقع الحالي قبل توفر بيانات الموقع الفعلي.
من المحتمل أن يكون حلاً رائعًا للحصول على نوع من العلم مثل isReady مع إمكانية رد الاتصال في Geolocator التي تشير إلى أن خدمة GPS جاهزة لتقديم بيانات الموقع من خلال الدفق.

هل جرب أي شخص هذا على سبيل المثال: https://github.com/Lyokone/flutterlocation ، أو هذا: https://github.com/Lyokone/flutterlocation ؟ حتى نتمكن من استبعاد الأخطاء التي لا تتعلق بهذه الحزمة.

لقد جربت ذلك ، وانتهى بي الأمر بهذا (هذا لا يعني أنه ليس كذلك
يستحق المحاولة رغم ذلك!). كل منهم لديه "بعض" المشاكل ، أعتقد حقا
لأن Android به بعض الأشياء غير الواضحة.

عادةً ما اكتشفت عندما لا يتم إرجاع موقع على أي من ملفات
الحزم) ، فذلك بسبب مشكلة عدم وجود رفرفة (على سبيل المثال ، دخل نظام تحديد المواقع العالمي (GPS)
وضع السكون ، أو لا توجد إشارة GPS).

يوم الخميس 15 نوفمبر 2018 الساعة 7:26 مساءً HerrNiklasRaab [email protected]
كتب:

هل جرب أي شخص هذا على سبيل المثال:
https://github.com/Lyokone/flutterlocation ، أو هذا:
https://github.com/Lyokone/flutterlocation ؟ حتى نتمكن من استبعاد الأخطاء
لا تتعلق بهذه الحزمة.

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/BaseflowIT/flutter-geolocator/issues/135#issuecomment-439160446 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/ADuG9WRbZuJYvi5N_2xrrku-Jurk6trIks5uvb_SgaJpZM4YKDSm
.

أي شخص يحاول لي؟
flutter_background_geolocation

هل تعمل مع الشاشة خارج الاهتمام؟

يوم الخميس ، 15 نوفمبر 2018 الساعة 8:16 مساءً Chris Scott [email protected]
كتب:

أي شخص يحاول لي؟
flutter_background_geolocation
https://pub.dartlang.org/packages/flutter_background_geolocation#-readme-tab-

-
أنت تتلقى هذا لأنه تم ذكرك.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/BaseflowIT/flutter-geolocator/issues/135#issuecomment-439175841 ،
أو كتم الخيط
https://github.com/notifications/unsubscribe-auth/ADuG9f5uvZK0lDnYecMoFZhJnF0ylz6Pks5uvcuygaJpZM4YKDSm
.

يعمل حتى إذا قمت بإنهاء تطبيقك ( stopOnTerminate: false ) أو أعدت تشغيل الجهاز ( startOnBoot: true ).

أواجه نفس المشكلة التي لا تعود أبدًا من getCurrentPosition .
لدي الكود التالي:
position = await Geolocator() .getCurrentPosition(desiredAccuracy: LocationAccuracy.best); setState(() { _position = position; }); if (position == null) Fluttertoast.showToast( msg: 'Position is null', toastLength: Toast.LENGTH_SHORT); else Fluttertoast.showToast( msg: 'Got Position', toastLength: Toast.LENGTH_SHORT);

الأذونات هي:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.hardware.location.gps" /> <uses-permission android:name="android.hardware.location.network" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> .
عندما أقوم بتشغيل البرنامج ، يظهر مؤشر الموقع في الجزء العلوي على الشاشة ويظل ثابتًا حتى أقوم بإغلاق البرنامج.
اي مساعدة من فضلك؟

يحدث نفس الشيء ، لا يعمل getCurrentPosition باستخدام API 23.
أي عمل حول هذا أو أي حزمة بديلة تعمل للحصول على المركز الحالي؟

إنه صعب بعض الشيء. يمكنني أن أجعله يعمل الآن عن طريق تشغيل تطبيق Google Map أولاً والسماح له بطلب الإذن لتمكين GPS عند النقر فوق موقعي. بعد ذلك ، يعمل getCurrentPosition فجأة مثل السحر.

في حالتي ، لا يمكنني استرداد الموقع باستخدام أي واجهة برمجة تطبيقات ، ولست متأكدًا مما إذا كان هذا يمكن أن يحل مشاكلك أم لا
حاولت إزالة العامل NOT هنا ، أضفت كشف return وقد نجح الأمر. https://github.com/BaseflowIT/flutter-geolocator/blob/master/android/src/main/java/com/baseflow/flutter/plugin/geolocator/tasks/LocationUpdatesUsingLocationManagerTask.java#L52

// If we are listening to multiple location updates we can go ahead
// and report back the last known location (if we have one).
if(mStopAfterFirstLocationUpdate && mBestLocation != null) {
reportLocationUpdate(mBestLocation);
return;
}

لقد عثرت للتو على هذا لأنني كنت بحاجة إلى الحصول على حل سريع حقًا بعد أن استخدمت مكونًا إضافيًا آخر خيب ظني في الإنتاج. يمكنني أن أؤكد أنني اختبرت هذا على API 23 (جهاز مادي) و API 24 (جهاز مادي) و API 28 (جهاز مادي) ولم يكن لدي مشكلة معه. في API 23 ، سئلت عما إذا كنت أرغب في مساعدة Google في تحسين الموقع وما إلى ذلك ، وقلت نعم ، لقد تم تحميل الموقع بعد حوالي 20 ثانية أو نحو ذلك. في الماضي ، واجهت مشكلات حقيقية في جعل المحاكيات تعيد المواقع (تطوير Android الأصلي) ، فهل يمكن أن تكون مجرد مشكلة في المحاكي؟

لدي نفس المشكلة وقمت بتعيين مهلة للعمل. عندما حدثت المهلة ، اتصلت بـ getLastKnownPosition ()

Geolocator().getCurrentPosition().timeout(Duration(seconds: 10)).then((position) {
      //getting position without problems
      print(position);
    }).catchError((error) {
      if (error is TimeoutException) {
        Geolocator().getLastKnownPosition().then((position) {
          //getting last known position
          print(position);
        }).catchError((error) {
          //handle the exception
        });
      } else {
        //handle the exception
      }
    });

يمكنك أيضًا أن تفعل الشيء نفسه مع الدفق

NMateu شكرا

واجهت نفس المشكلة في المحاكي ، لكن .forceAndroidLocationManager = true; أصلحها لي. يبدو أن مدير الموقع المدمج في بعض الأحيان يعترض الطريق.

اي اخبار عن هذا؟

هل تمكن أي شخص من حل المشكلة؟ أنا حقا بحاجة لإنجاز هذا ، يا جماعة!

نفس المشكلة ، إنها تعمل بشكل جيد على جهاز iOS ، لكن لا يمكنها الحصول على الموقع على android هذه الأيام.

نعم ، يمكنني بالفعل الحصول على العنوان بطريقة الموضع placemarkFromAddress . لكن الموقع نفسه معطل.

نفس المشكلة هنا

void _getUserLocation () غير متزامن {
Geolocator = Geolocator () .. forceAndroidLocationManager = صحيح ؛
GeolocationStatus geolocationStatus = انتظار geolocator.checkGeolocationPermissionStatus () ؛
موقف الموقف = انتظار Geolocator ()
.getCurrentPosition (requiredAccuracy: LocationAccuracy.high) ؛
قائمةعلامة موضعية = انتظار Geolocator ()
.placemarkFromCoordinates (position.latitude، position.longitude) ؛
مطبعة("-----------------")؛
طباعة (علامة موضعية [0] .position) ؛
طباعة (geolocator.toString ()) ؛
طباعة (geolocationStatus.toString ()) ؛
setState (() {
_initialPosition = LatLng (position.latitude، position.longitude) ؛

  locationController.text = placemark[0].name;
});

}

يظهر الموقع الخطأ.

أنا / رفرفة (7363): خط العرض: 37.421999899999996 ، طويل: -122.08405750000001
أنا / رفرفة (7363): مثيل "Geolocator"
أنا / رفرفة (7363): GeolocationStatus.granted

void _getUserLocation () غير متزامن {
Geolocator = Geolocator () .. forceAndroidLocationManager = صحيح ؛
GeolocationStatus geolocationStatus = انتظار geolocator.checkGeolocationPermissionStatus () ؛
موقف الموقف = انتظار Geolocator ()
.getCurrentPosition (requiredAccuracy: LocationAccuracy.high) ؛
قائمة العلامات الموضعية = انتظار Geolocator ()
.placemarkFromCoordinates (position.latitude، position.longitude) ؛
مطبعة("-----------------")؛
طباعة (علامة موضعية [0] .position) ؛
طباعة (geolocator.toString ()) ؛
طباعة (geolocationStatus.toString ()) ؛
setState (() {
_initialPosition = LatLng (position.latitude، position.longitude) ؛

  locationController.text = placemark[0].name;
});

}

يعمل على المحاكي مع هذا المقتطف
Geolocator()..forceAndroidLocationManager = true;

عملت هذه الحزمة مثل السحر لكل شيء

(https://github.com/alfanhui/new_geolocation)

كنت أواجه نفس المشكلة مع عدد قليل من أجهزة Android. لكنني وجدت حلًا لذلك -

كل ما عليك فعله هو تعيين قيمة Geolocator () .. forceAndroidLocationManager = true.

Geolocator النهائي = Geolocator () .. forceAndroidLocationManager = صحيح ؛

حل في الإصدار 6.0.0

موضع المركز = انتظار Geolocator.getCurrentPosition (
wantAccuracy: LocationAccuracy.low، forceAndroidLocationManager: true) ؛
لقد أصلحت مشاكلي

أحصل على خطأ في سطر ForceAndroidLocationManager الذي يظهر الخط الأحمر والخطأ هو ... "لم يتم تعريف أداة الضبط 'forceAndroidLocationManager' للنوع 'Geolocator'.
جرّب استيراد المكتبة التي تعرّف "forceAndroidLocationManager" ، أو تصحيح الاسم إلى اسم أداة ضبط موجودة ، أو تحديد أداة ضبط أو حقل باسم "forceAndroidLocationManager". "......... من فضلك هل يمكن لأحد أن يساعدني في هذا

@ aditikumar-png ما هو إصدار محدد الموقع الجغرافي الذي تستخدمه؟ ربما قمت بالتحديث إلى الإصدار 6.x مؤخرًا. هذا الإصدار لديه كسر التغيير. لقد نقلنا الخاصية Geolocator().forceAndroidLocationManager إلى معلمة مسماة على الطريقتين getCurrentPosition و getPositionStream .

هذا يعني أنه يمكنك الآن استخدام أداة تحديد الموقع الجغرافي مثل هذا:

final position = await Geolocator.getCurrentPosition(forceAndroidLocationManager: true);

بدلا من القديم:

final geolocator = Geolocator();
geolocator.forceAndroidLocationManager = true;

final position = await geolocator.getCurrentPosition();

@ aditikumar-png ما هو إصدار محدد الموقع الجغرافي الذي تستخدمه؟ ربما قمت بالتحديث إلى الإصدار 6.x مؤخرًا. هذا الإصدار لديه كسر التغيير. لقد نقلنا الخاصية Geolocator().forceAndroidLocationManager إلى معلمة مسماة على الطريقتين getCurrentPosition و getPositionStream .

هذا يعني أنه يمكنك الآن استخدام أداة تحديد الموقع الجغرافي مثل هذا:

final position = await Geolocator.getCurrentPosition(forceAndroidLocationManager: true);

بدلا من القديم:

final geolocator = Geolocator();
geolocator.forceAndroidLocationManager = true;

final position = await geolocator.getCurrentPosition();

شكرا جزيلا!!!!! لقد قمت بحل مشكلتي في ثوانٍ كنت أعاني من هذا منذ 9 ساعات

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات