8

speed giá trị luôn là null trong Android 5+. Chúng tôi sử dụng sau đây:Tốc độ là “null” với plugin vị trí địa lý trên Android 5+

  • Core: Cordova - 5.1.1
  • Hệ điều hành: Cordova-Android 4.0.2
  • phiên bản Plugin: 1.0.1
  • Thiết bị: Samsung Galaxy S4 (A5.0.1) , Nexus 5 (A5.1.1), Bút cảm ứng LG G3 D690 (A5.0.2).

Chúng tôi gặp sự cố này ngay sau khi chúng tôi cập nhật lên Android 5+.

Vẫn hoạt động tốt trên Android 4 và iOS. Chúng tôi đã thử cả hai số getCurrentPositionwatchPosition - không may mắn. HighAccuracytrue.

Chúng tôi đã phải thực hiện giải pháp cho Android 5 sử dụng getCurrentPosition (thay vì làm việc hoàn hảo watchPosition cho các hệ điều hành khác), nhiều lần dẫn đến tốc độ tính toán trong một khoảng thời gian lên đến 400 km/h, trong khi tính toán chính xác hơn hoặc ít hơn tốc độ tổng thể.

  • Có bất kỳ quyền nào đối với Android 5 mà chúng tôi đang thiếu không?
  • Chúng ta có thể làm gì để giải quyết vấn đề này?

Chúng tôi muốn sử dụng một mã cho tất cả nền tảng như mong muốn và tiếp tục sử dụng watchPosition vì nó hoạt động tốt.

  • Mọi đề xuất? Đây có phải là một vấn đề được biết đến?

Lưu ý liên quan: Có bất kỳ lỗi/vấn đề nào đã biết cho Cordova với thiết bị Galaxy nói chung không? Cảm ơn!

Trả lời

1

Cordova không cung cấp bất kỳ mã nguồn gốc nào cho vị trí địa lý, nó chỉ thêm các quyền để kích hoạt vị trí địa lý trên webview, vì vậy nếu có điều gì đó không thành công thì vấn đề là khi triển khai chromium.

Bạn có thể thử sử dụng plugin crosswalk để xem vị trí địa lý có hoạt động tốt hơn hay không (hoặc thêm phiên bản Chromium được cập nhật vào dự án của bạn) hoặc sử dụng phiên bản 0.3.6 của plugin. .

EDIT: đã có một lỗi khi đi qua các params từ cordova đến geolocation webview mà có thể gây ra vấn đề của bạn để, hãy thử với phiên bản mới nhất của plugin

cordova plugin add https://github.com/apache/cordova-plugin-geolocation 
2

navigator.geolocation.getCurrentPosition() là chỉ kiểm tra GPS khi lựa chọn enableHighAccuracy được đặt là true (mặc định). Bạn có thể đặt enableHighAccuracyfalse.

{enableHighAccuracy:false,maximumAge:Infinity, timeout:60000} 

Bạn có thể cần quyền sau

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

Hy vọng nó giúp.

Các vấn đề liên quan